说道史上最能打的帝王,刘裕当仁不让。在他掌握东晋全部势力后又前去灭后秦。此后长安失守又夺回,即使损失颇多良将,但是黄河以南淮水以北尽归刘裕。
义熙十二年(416年)一月,后秦皇帝姚兴逝世,姚泓继位,内部叛乱迭起,政权不稳。刘裕认为这是灭亡后秦的良机。八月,刘裕以刘穆之任尚书左仆射,内总朝政,外供军粮,自己率大军分四路北伐。
九月,扺达彭城。在此期间,他相继接受司、雍、徐州刺史的任命。龙骧将军王镇恶、冠军将军檀道济领兵由淮、淝转向许、洛,后秦诸屯守皆望风降附,晋军进展神速。十月,王镇恶军占领洛阳,擒送后秦守将姚洸至建康,并修复西晋五帝的陵寝,设置守卒。
义熙十三年(417年)正月,刘裕留其子刘义隆镇守彭城,自率大军北上。此时北魏派十万重兵驻守河北,并以游骑骚扰晋军。刘裕在行军中,虽常设奇阵或用大弩强槊击败魏军,但进军速度缓慢。王镇恶军由洛阳进抵潼关后,为后秦主力守险阻拦;檀道济军的粮道也为秦将姚绍截断。晋军一时处于危境。幸得当地百姓的帮助,才转危为安。王、檀二人向刘裕求援,而刘裕却为北魏军牵制,自顾不暇。
三月初八,刘裕以左将军向弥率部分兵力屯于黄河重要渡口碻璈(今山东东阿西北),自率大军进入黄河;魏军以数千骑兵沿黄河北岸跟随刘裕军西行,防止晋军于黄河北岸上陆向魏进击,凡漂流至北岸的晋军人员,均被魏军擒杀。刘裕数次派兵上岸攻击魏军,刚一登岸,魏军便逃离岸边。为击败魏军的袭扰,刘裕命数千勇士及百乘战车,由丁旿和宁朔将军朱超石率领,携带强弓利箭,登上黄河北岸,列阵而进。魏军立即前来进攻,魏将长孙嵩率骑兵三万四面围攻晋军,反被击败。
四月中旬,刘裕进至洛阳,为防止魏军的袭击,在洛阳停军两个月,部署后方的防卫。七月,刘裕全面击退魏军,河南全境被收复,刘裕随后进至陕城;前锋沈田子攻入武关,进屯青泥。八月,刘裕至潼关,与诸部会合,采纳王镇恶提议,命他率水军从黄河入渭水,逼向长安。
正值秦将姚难由香城(今陕西大荔东)率军西撤,王镇恶跟踪追击。姚泓率兵由霸上到达石桥(长安城洛门东北),接应姚难;以镇北将军姚疆和姚难合兵守卫泾上(今陕西高陵境),迎击王镇恶军。王镇恶命将军毛德祖击败秦军,姚疆战死,姚难逃回长安。东平公姚赞得知晋军迫近长安,便率军由定城退往郑城(今陕西华县)。刘裕大军随之逼近。
姚泓为缓解两面受敌的危局,谋划先消灭沈田子军,再抵御刘裕,于是率步骑数万急趋青泥。沈田子军本为疑军,不过千余人,但各自为战,骁勇异常,数次出击竟使姚泓败还长安。此时,王镇恶突破潼关防线,率师直进,一举攻陷长安,姚泓率群臣投降,后秦灭亡。
义熙十三年(417年)冬,刘裕率军抵达长安],想在此稍作休整,经略关中。不料,传来了刘穆之病死的消息。刘裕汇集在长安的文武将佐讨论,大部分人不赞成继续北伐。刘裕遂留其十二岁的儿子刘义真以及王修、王镇恶、沈田子等文武共守长安,自己统军南归。刘裕此举,为夏主赫连勃勃的谋臣王买德窥破心迹。在刘裕南归不久后,赫连勃勃派军南断青泥,东扼潼关,率大军进攻长安。
在此时,留守长安的晋朝文武发生内讧,沈田子杀王镇恶,王修杀沈田子,刘义真复杀王修。刘裕得到消息,惊恐不已,急令朱龄石镇守长安,命刘义真速回。刘义真和将士大掠财宝美女,车载南还,为夏军追及。朱龄石阵亡,刘义真单骑逃逸。
长安虽得而复失,良将劲兵损失颇多,但潼关以东收复的部分关中之地和整个河南地区仍然得到刘裕的重兵扼守。经过两次北伐,黄河以南、淮水以北以及汉水上游的地区,为刘裕据有。