晉元興元年(402年),門閥士族譙郡桓玄代晉建楚,自立為帝。次年三月,出身寒門士族的北府舊將劉裕、何無忌占據京口(今江蘇鎮江),劉毅、孟昶等製據廣陵(今江蘇揚州)起兵,打著恢複晉室的旗號,討伐桓玄。劉毅等帥兵到京口與劉裕會師。然後,合兵進攻建康。討伐軍迅速擊敗桓玄的抵抗,進而占領建康。此後又派劉毅等帥軍西上追擊桓玄,陸續鎮壓了桓玄勢力的反抗,迎回被廢的晉安帝重登皇位,重建東晉。劉裕起兵成功,任使持節、都督揚、徐、兗等八州諸軍事、領軍將軍、徐州刺史、從而掌握了軍權,尤其是掌握了北府兵這支最精銳的軍隊。義熙四年(408年),劉裕又升任揚州刺史、錄尚書事的要職,他實際掌握了東晉政軍大權。
南燕慕容超認為南方軟弱可欺,屢次派騎兵侵入東晉邊境騷擾和劫掠人口。劉裕於義熙五年(409年)出兵,北伐南燕,出兵兩月後就已包圍了南燕首都廣固(今山東省益都北),南燕驚慌失措,向後秦求救,秦卻未派兵。晉義熙六年(410年)三月,劉裕大軍攻陷廣固,生擒慕容超,滅掉南燕,收複了青兗廣大地區。劉裕聲威大震,時人無可匹敵。在劉裕北伐之時,盤踞廣州的盧循、徐道覆率部北上,圖謀爭奪政權。他們在豫章(今江西省南昌)大敗東晉江州刺史何無忌,聲威大振,兵鋒直指建康。劉裕聞訊,急忙班師回朝,親率數十人匆忙趕回建康。當時地位和實力僅次於劉裕的豫州刺史劉毅為壯大聲勢,不聽劉裕指揮,率軍二萬從姑熟溯江而上,以阻擊盧循軍隊。六月,雙方戰於桑落洲(今江西省九江東北),劉毅大敗,狼狽逃走,至使聲望一落千丈,這時建康城內,人心惶惶,很多人提議遷都江北,遭到劉裕堅決反對,宣布內外戒嚴。同時,征發居民修築防禦工事,此時大批援軍從而陸續趕到。盧循聞知劉裕還都,就很想退兵,經徐道覆力爭,猶豫多日才繼續進兵。劉裕也得到了周密部署的時間,堅壁不戰。盧循因師老兵疲、給養因難,被迫退回尋陽。試圖西取荊州,徐道覆部卻遭到失敗。盧循、徐道覆又率部東下,與劉裕軍激戰,又遭慘敗,遂率部南逃,不久全被晉軍殲滅。
盧循的起義被平定後,劉裕與劉毅的矛盾已日趨激化。晉義熙八年(412年),江州刺史劉毅移鎮荊州,力圖割據,於是取江州兵和豫州西府文武萬餘西上。由於劉毅文溫爾雅,頗得徒有虛名的名士如謝混等人的歡心,而劉裕氣質不文,在結交高級士族方麵處劉毅的下風,心中十分不滿。這時,劉毅又要求允許起用從弟劉藩做他的副手,以黨徒郗僧施擔任南蠻校尉的要職。劉裕感到分裂在即,決意先發製人,先收殺劉藩、、謝混等人,他命王鎮惡為前鋒,自己親統大兵征討劉毅,不久就攻克了江陵,劉毅逃走,後不得不在牛牧佛寺(今湖北江陵)自殺。劉裕隨之又潛回建康,誘殺了心懷狐疑,欲謀叛亂的豫州刺史諸葛長民兄弟。劉裕在寒門士族中確立起獨一無二的統帥地位。軍權的高度集中,使寒門士族得以有效地利用武力謀取更大的利益,為王權的恢複奠定了基礎。
在此之前,譙縱乘東晉衰亂,占據四川稱王。後譙縱常與醒玄從兄桓廉連兵侵擾東晉,威脅荊楚。義熙九年(413年)一月,劉裕命大將朱齡石率眾二萬攻蜀譙縱,力克平模(今屬四川省),譙縱部將相繼奔潰,譙縱棄成都出逃,尚書令馬耽在成都投降,益州就這樣被東晉收複。
劉裕討伐劉毅時曾任命宗室司馬休之為荊州刺史。幾年後,劉裕嫌忌司馬休之在江陵深得人心,以休之子文思犯法而休之不肯嚴懲反而心存怨氣為借口,下令討伐休之。東晉雍州刺史魯宗之及其子魯軌擔心不為劉裕所容,和司馬休之連兵抵抗劉裕。休之等兵敗後投後秦。義熙十二年(416年),後秦派遣魯宗之子魯軌率兵進犯襄陽,騷擾荊楚。這時,後秦皇帝姚興突然病故,其子姚泓繼位,後秦王室內部不和,發生內訌。是時,北魏拓拔氏跨有並冀,大夏赫連氏虎據朔方,都牽製了後秦相當一部分兵力。劉裕在義熙十二年(416年)九月,親統大軍,北伐後秦。北伐大軍兵分四路,水陸並進,浩浩蕩蕩。檀道濟、王鎮惡所屬二部進展十分迅速,所至望風歸降,十一月就占領了洛陽。前鋒隨之進抵潼關。劉裕主力部隊也擊敗了北魏的騷擾,也順利抵達洛陽。然後又兵分兩路,繼續向長安進軍。義熙十三年(417年)九月,劉裕軍攻入平朔門(即長安北門),姚泓出降,後秦滅亡。十二月,劉裕留守建康的心腹、尚書左仆射劉穆之病死,使本來想留在長安經略西北的劉裕擔心後方發生變化,於是決定返回江南,而留其次子義真鎮守長安。劉裕此次北伐,收複了大片國土,並牢固地占有了潼關以東,黃河以南的廣大地區,威望更加增高。
劉裕平定桓玄掌權到即位以後,對政治、經濟進行了不少改革,除去東晉許多弊政,使政權顯得虎虎而有生氣。首先,在政權組織上,即提升寒門士族,又不排斥吸收高級士族。他殺了一批頑固抵製寒門士族參與政權、拒絕與其合作的高門士族,如殺太原王愉、王綏、陳郡殷仲文、殷叔文等人。拉攏了許多願意合作的高門士族結成聯盟,如琅邪王謐、王弘、陳郡、謝裕、謝晦、會稽孔安國等人,依然給其高官要職,緊利用他們的經驗和智慧幫助鞏固政權,高門士族在經濟上也依然獲得了優厚待遇。劉裕等人還主動與市門士族聯姻,如為次子劉義真娶謝裕女,招褚秀之為婿,使以劉裕為核心的寒門家族的地位提高了,甚至具有超越門閥士族的地位的趨勢。
東晉末年的統治過於寬鬆,朝廷沒有威信,官員不喜歡管理事務,至使豪族十分猖狂,經常欺淩人民。劉裕就部屬劉穆之斟酌時宜以采取切實可行的措施,劉裕本人以身作則,威禁內外,百官都肅然奉職,沒有多長時間就改變了弊政。他關心貧民,先後把京口的渤海刁氏萬餘頃土地及晉安帝王皇後的土地分賜貧民。當時江南的山湖川澤,多被豪強所侵占,而小民砍柴、釣魚都要向其交錢交物。為此劉裕頌布了禁止占固山澤的法令。劉裕還采取了一列措施,取製高門士族搶占國家的勞動人口,起兵之初就將役使官人的褚粲等免官。義熙九年(413年)嚴格土斷。會稽大士族虞亮因藏匿了亡命千餘人被劉裕下令處死,並免會稽內史司馬休之官職。劉裕一方麵盡量減輕編戶農民的賦役負擔,防止其破產,一方麵又通過土斷將僑人中的大批小農變為編戶農民,以增加國家的賦稅收入,加強了國家對自耕農的控製以充實國家的經濟力量,為強大的王權奠定了堅實的基礎。對於州郡所送秀才、孝廉進行考試,決不允許濫竽充數。在平定劉毅之後,在荊州“寬租省調、節役原刑”,贏得了荊州人士稱讚。在驅走司馬休之以後,又對荊雍二州“老稚服戎,空戶從役”的現象加以改變,規定兩州軍人和吏年紀在12以下、60以上者全都遣散。稱帝後,除去一些雜稅,因軍事而調發的奴僮送還本主。過去,州、府置將、吏長漫無限製,劉裕規定荊州府置將不能超過2000人,吏不能超過10000人。其他州置將不能超過500人,吏不能超過5000人,以加強中央對地方的控製,力圖避免東晉鎮割據的重現。
劉裕北伐回到建康後,於義熙十四年(418年)受封為相國、宋公、並受九錫之命。次年一月,劉裕因讖諱說“昌明之後尚有二帝”,就派王韶之與安帝的左右把安帝勒死。劉裕稱遺詔奉司馬德文即皇帝位,是為晉恭帝。八月,劉裕接受宋王爵位。元熙二年(420年)一月,晉恭帝給劉裕加殊禮。七月,傅亮勸晉恭帝禪位給宋王劉裕,把草擬好的詔書進呈給晉恭帝,讓其重抄。晉恭帝竟欣然提筆,對左右人說:“桓玄篡逆,晉氏已失天下。又為劉裕延長了將近二十年,今天的事,本來也就心甘情願。”就親筆在紅紙上寫詔宣布禪位,至此,東晉滅亡。宋王劉裕即皇帝位,改國號為宋,宋朝建立。