晉安帝復位後,劉裕掌握了東晉大權。劉裕本來是個出身貧苦的小軍官,在士族中沒有什麼地位,決定發動北伐。
公元409年,劉裕從建康出發,先出兵包圍了南燕(十六國之一)的國都廣固(今山東益都西北)。南燕的國主慕容超著急了,向後秦討救兵。
當時,後秦在北方是個比較大的國家。後秦國主姚興派使者到晉軍大營去見劉裕,說:「燕國和我們秦國是友好鄰國。我們已派出十萬大軍駐紮在洛陽。你們一定要逼燕國,我們不會坐視不救。」
劉裕聽了使者這番威脅的話,冷笑一聲說:「你回去告訴姚興。我本來打算滅掉燕國之後,休整三年再來消滅你們。現在既然你們願意送上門來,那就來吧!」
使者走了以後,有人對劉裕說:「您這樣回答他,只怕激怒了姚興。如果秦兵真的來攻,我們怎麼對付?」
劉裕泰然說:「你就不懂得這個理兒。俗話說:‘兵貴神速’,他們如果真的要出兵,就會偷偷出兵,何必先派人來通知呢?這完全是姚興虛張聲勢,嚇唬我們。我看自己也顧不過來,哪有什麼能力救人呢?」
不出劉裕所料,那時候後秦正跟另一個小國夏國互相攻打,還打了敗仗,更談不上出兵救南燕。沒有多久,劉裕就把南燕消滅了。
過了幾年,劉裕平定了南方的割據力量,再一次北伐,進攻後秦。他派大將王鎮惡、檀道濟帶領步兵,從淮河一帶出兵向洛陽方向進攻,自己親自率領水軍沿著黃河進軍。
那時候,北方鮮卑族建立的北魏開始強大起來,它的勢力已經發展到黃河北岸。北魏在北岸集結了十萬大軍,威脅晉軍。劉裕的水軍沿著黃河前進,有時風猛水急,晉軍的船隻被水衝到北岸,就受到魏兵的攻擊。
劉裕派水軍上北岸去打魏軍,魏兵就逃,等晉軍回到船上,他們又在北岸騷擾,弄得晉軍來回奔跑,沒法順利進兵。
劉裕擺出「卻月陣」 打敗魏兵滅掉後秦
劉裕派了一個將軍帶了七百兵士、一百輛兵車登上北岸,沿岸擺開一個半圓形的陣勢,兩翼緊緊靠著河岸,中間鼓出,當中的一輛兵車上豎了一根白羽毛。因為這種佈陣形狀像個月鉤,所以名叫「卻月陣」。
魏兵遠遠觀察著晉軍的佈陣,不懂是什麼意思,也沒有敢動。
一會兒,只見晉軍中間車上有人舉起白羽毛,兩側就湧出了二千名兵士,帶著一百張大弓,奔向兵車。
魏兵看看這個陣勢,也沒有什麼大不了,就集中三萬騎兵向河岸猛攻晉陣。晉陣上一百輛兵車上的弓箭齊發,仍舊擋不住魏兵。
沒料到晉軍在卻月陣後面,另外佈置好一千多支長矛,裝在大弓上。這種長矛約有三四尺長,矛頭特別鋒利。魏兵正向晉軍猛攻的時候,晉軍兵士們就用大鐵錘敲動大弓,那長矛往魏軍飛去,每支長矛就能射殺魏兵三四個,三萬名魏兵一下子就被射死了好幾千。其他魏兵不知道晉軍陣後還有多少這種武器,嚇得抱頭亂竄,全線崩潰。晉軍又乘勝追擊,殺死了大批魏兵。
劉裕打退魏軍,打通了沿黃河西進的道路,順利西進。那時候,王鎮惡和檀道濟帶領的步兵,已經攻下洛陽,在潼關和劉裕水軍會師。接著劉裕派王鎮惡攻下長安,滅了後秦。
劉裕滅了後秦,把他一個十二歲的兒子和王鎮惡留在長安,自己帶兵回南方。
過了幾年,晉安帝死去,劉裕認為時機成熟,就派人勸說剛剛即位的晉恭帝讓位。公元420年,劉裕即位做了皇帝,改國號為宋。這就是宋武帝。東晉王朝在南方統治了一百零四年,到這時候滅亡了。