东晋孝武帝太元二年(377年),由于前秦已一统北部中国,东晋王朝受到空前的军事压力,因此诏求良将镇御北方。当时的权臣谢安遂任命其侄子谢玄应举。朝廷任命谢玄为建武将军、兖州刺史、领广陵相、监江北诸军事,镇广陵。其时广陵和京口聚居着大量逃避北方战乱而来的流民,谢玄到任后,在这些人中选拔骁勇士卒如刘牢之,刘裕等,建立了一支军队,太元四年(379年),谢玄改镇京口,因为当时京口又名北府,故而其军得名北府兵。
太元八年(383年),北府军在淝水之战中一举击败前秦大军,乘势追击,刘牢之一度追到邺。太元十二年(387年),谢玄被解除了北府军的领导权,司马怡、王恭先后代之,北府军军阀化。晋安帝隆安元年(397年),王恭率北府军起兵反晋,次年刘牢之杀之,代之为北府军领袖。此后北府军主要致力于镇压孙恩、卢循的天师道起义军。
晋安帝元兴元年(402年),北府军奉命征讨在荆州割据的桓玄,刘牢之随即投降桓玄,桓玄称帝后削减刘牢之兵权,刘牢之意图起兵对抗桓玄,然由于投降桓玄早已丧失人心,众叛亲离下自杀。元兴三年(404年),原北府军参军刘裕率余部在京口起兵反抗桓玄,并杀之。此后,北府军成为刘裕的军事支柱。420年,刘裕称帝,建立刘宋,北府军成为其皇家军队的主力。