北府兵是东晋孝武帝初年谢玄组建训练的一支精锐军队。太元二年(377年) ,朝廷因前秦强大,诏求文武良将镇御北方。其时谢安当国,以兄子谢玄应举。朝廷拜玄建武将军﹑兖州刺史﹑领广陵相﹑监江北诸军事,镇广陵。徐(治京口)﹑兖(治广陵)二州本是北来侨民的集中地。“人多劲悍”,富于战斗经验,桓温曾说:“京口酒可饮,箕可用,兵可使。”谢玄召募劲勇,徐﹑兖人民纷纷应募入伍,彭城刘牢之﹑东海何谦﹑琅邪诸葛侃﹑乐安高衡﹑东平刘轨﹑西河田洛﹑晋陵孙无终等皆以骁勇应选。谢玄以刘牢之为参军,常领精税为前锋,战无不捷,威震敌胆。太元四年,谢玄加领徐州刺史,镇京口。东晋称京口为“北府”,所以称这支军队为北府兵。这支军队建立不久,抵御前秦屡立战功。
早在太元三年八月,秦将彭超进攻彭城(今江苏徐州)。次年二月,谢玄率高衡﹑何谦解彭城之围。后彭超复与俱难﹑毛当等率秦军六万南下,围晋幽州刺史田洛于三阿(今江苏高邮西),朝廷大震。五月,谢玄复率何谦﹑刘牢之等解田洛之围。六月,又连续大败秦军,彭超﹑俱难仅以身免而北逃。八年,在有名的淝水之战中,谢玄、刘牢之率领的北府兵更发挥了主力军的作用。此后,北府兵乘胜北伐,先后收复今河南﹑山东境内黄河以南大片土地。刘牢之率领的前锋,还一度打到黄河以北的邺城(见邺)。十二年,朝廷征谢玄为会稽(今浙江绍兴)内史,以朱序为青﹑兖二州刺史,代玄镇广陵。谢玄从此失去对北府兵的领导权。此后, 谯王司马怡,外戚王恭相继任青﹑兖二州刺史,统领北府兵。安帝隆安元年(397年),王恭自京口起兵反晋,北府兵从此成为东晋统治集团内部火并的工具。次年,王恭二次举兵反晋, 司马刘牢之投降朝廷,倒戈击败王恭。朝廷乃以刘牢之代恭都督兖﹑青﹑冀﹑幽﹑并﹑徐﹑扬州晋陵诸军事。刘率北府兵镇京口, 成为割据一方的军阀。三年,三吴地区爆发了孙恩起义。朝廷遣卫将军﹑徐州刺史谢琰(谢安子)与刘牢之前往镇压。不久,谢琰兵败被杀,刘牢之率领的北府兵成为镇压这次起义的主要力量(见孙恩﹑卢循起义)。
东晋政府成立北府兵,也是为了拱卫首都, 充实长江下游军事力量,以改变荆﹑扬的形势。元兴元年(402年)正月,朝廷以宗室司马元显为骠骑大将军﹑征讨大都督,以刘牢之为前锋都督,率北府兵征讨荆州军阀桓玄。三月,刘牢之投降桓玄,不久,被桓玄夺去兵权,被迫自杀。北府兵遂为桓玄并吞。三年二月,刘牢之原参军刘裕与刘毅﹑何无忌(牢之外甥)等联络一部分北府兵中下级将领分别在京口与广陵举兵击灭桓玄。刘裕等人都是北府兵将领出身,但此后他们的军队已不再是原来意义上的北府兵了。