晋元兴元年(402年),门阀士族谯郡桓玄代晋建楚,自立为帝。次年三月,出身寒门士族的北府旧将刘裕、何无忌占据京口(今江苏镇江),刘毅、孟昶等制据广陵(今江苏扬州)起兵,打着恢复晋室的旗号,讨伐桓玄。刘毅等帅兵到京口与刘裕会师。然后,合兵进攻建康。讨伐军迅速击败桓玄的抵抗,进而占领建康。此后又派刘毅等帅军西上追击桓玄,陆续镇压了桓玄势力的反抗,迎回被废的晋安帝重登皇位,重建东晋。刘裕起兵成功,任使持节、都督扬、徐、兖等八州诸军事、领军将军、徐州刺史、从而掌握了军权,尤其是掌握了北府兵这支最精锐的军队。义熙四年(408年),刘裕又升任扬州刺史、录尚书事的要职,他实际掌握了东晋政军大权。
南燕慕容超认为南方软弱可欺,屡次派骑兵侵入东晋边境骚扰和劫掠人口。刘裕于义熙五年(409年)出兵,北伐南燕,出兵两月后就已包围了南燕首都广固(今山东省益都北),南燕惊慌失措,向后秦求救,秦却未派兵。晋义熙六年(410年)三月,刘裕大军攻陷广固,生擒慕容超,灭掉南燕,收复了青兖广大地区。刘裕声威大震,时人无可匹敌。在刘裕北伐之时,盘踞广州的卢循、徐道覆率部北上,图谋争夺政权。他们在豫章(今江西省南昌)大败东晋江州刺史何无忌,声威大振,兵锋直指建康。刘裕闻讯,急忙班师回朝,亲率数十人匆忙赶回建康。当时地位和实力仅次于刘裕的豫州刺史刘毅为壮大声势,不听刘裕指挥,率军二万从姑熟溯江而上,以阻击卢循军队。六月,双方战于桑落洲(今江西省九江东北),刘毅大败,狼狈逃走,至使声望一落千丈,这时建康城内,人心惶惶,很多人提议迁都江北,遭到刘裕坚决反对,宣布内外戒严。同时,征发居民修筑防御工事,此时大批援军从而陆续赶到。卢循闻知刘裕还都,就很想退兵,经徐道覆力争,犹豫多日才继续进兵。刘裕也得到了周密部署的时间,坚壁不战。卢循因师老兵疲、给养因难,被迫退回寻阳。试图西取荆州,徐道覆部却遭到失败。卢循、徐道覆又率部东下,与刘裕军激战,又遭惨败,遂率部南逃,不久全被晋军歼灭。
卢循的起义被平定后,刘裕与刘毅的矛盾已日趋激化。晋义熙八年(412年),江州刺史刘毅移镇荆州,力图割据,于是取江州兵和豫州西府文武万余西上。由于刘毅文温尔雅,颇得徒有虚名的名士如谢混等人的欢心,而刘裕气质不文,在结交高级士族方面处刘毅的下风,心中十分不满。这时,刘毅又要求允许起用从弟刘藩做他的副手,以党徒郗僧施担任南蛮校尉的要职。刘裕感到分裂在即,决意先发制人,先收杀刘藩、、谢混等人,他命王镇恶为前锋,自己亲统大兵征讨刘毅,不久就攻克了江陵,刘毅逃走,后不得不在牛牧佛寺(今湖北江陵)自杀。刘裕随之又潜回建康,诱杀了心怀狐疑,欲谋叛乱的豫州刺史诸葛长民兄弟。刘裕在寒门士族中确立起独一无二的统帅地位。军权的高度集中,使寒门士族得以有效地利用武力谋取更大的利益,为王权的恢复奠定了基础。
在此之前,谯纵乘东晋衰乱,占据四川称王。后谯纵常与醒玄从兄桓廉连兵侵扰东晋,威胁荆楚。义熙九年(413年)一月,刘裕命大将朱龄石率众二万攻蜀谯纵,力克平模(今属四川省),谯纵部将相继奔溃,谯纵弃成都出逃,尚书令马耽在成都投降,益州就这样被东晋收复。
刘裕讨伐刘毅时曾任命宗室司马休之为荆州刺史。几年后,刘裕嫌忌司马休之在江陵深得人心,以休之子文思犯法而休之不肯严惩反而心存怨气为借口,下令讨伐休之。东晋雍州刺史鲁宗之及其子鲁轨担心不为刘裕所容,和司马休之连兵抵抗刘裕。休之等兵败后投后秦。义熙十二年(416年),后秦派遣鲁宗之子鲁轨率兵进犯襄阳,骚扰荆楚。这时,后秦皇帝姚兴突然病故,其子姚泓继位,后秦王室内部不和,发生内讧。是时,北魏拓拔氏跨有并冀,大夏赫连氏虎据朔方,都牵制了后秦相当一部分兵力。刘裕在义熙十二年(416年)九月,亲统大军,北伐后秦。北伐大军兵分四路,水陆并进,浩浩荡荡。檀道济、王镇恶所属二部进展十分迅速,所至望风归降,十一月就占领了洛阳。前锋随之进抵潼关。刘裕主力部队也击败了北魏的骚扰,也顺利抵达洛阳。然后又兵分两路,继续向长安进军。义熙十三年(417年)九月,刘裕军攻入平朔门(即长安北门),姚泓出降,后秦灭亡。十二月,刘裕留守建康的心腹、尚书左仆射刘穆之病死,使本来想留在长安经略西北的刘裕担心后方发生变化,于是决定返回江南,而留其次子义真镇守长安。刘裕此次北伐,收复了大片国土,并牢固地占有了潼关以东,黄河以南的广大地区,威望更加增高。
刘裕平定桓玄掌权到即位以后,对政治、经济进行了不少改革,除去东晋许多弊政,使政权显得虎虎而有生气。首先,在政权组织上,即提升寒门士族,又不排斥吸收高级士族。他杀了一批顽固抵制寒门士族参与政权、拒绝与其合作的高门士族,如杀太原王愉、王绥、陈郡殷仲文、殷叔文等人。拉拢了许多愿意合作的高门士族结成联盟,如琅邪王谧、王弘、陈郡、谢裕、谢晦、会稽孔安国等人,依然给其高官要职,紧利用他们的经验和智慧帮助巩固政权,高门士族在经济上也依然获得了优厚待遇。刘裕等人还主动与市门士族联姻,如为次子刘义真娶谢裕女,招褚秀之为婿,使以刘裕为核心的寒门家族的地位提高了,甚至具有超越门阀士族的地位的趋势。
东晋末年的统治过于宽松,朝廷没有威信,官员不喜欢管理事务,至使豪族十分猖狂,经常欺凌人民。刘裕就部属刘穆之斟酌时宜以采取切实可行的措施,刘裕本人以身作则,威禁内外,百官都肃然奉职,没有多长时间就改变了弊政。他关心贫民,先后把京口的渤海刁氏万余顷土地及晋安帝王皇后的土地分赐贫民。当时江南的山湖川泽,多被豪强所侵占,而小民砍柴、钓鱼都要向其交钱交物。为此刘裕颂布了禁止占固山泽的法令。刘裕还采取了一列措施,取制高门士族抢占国家的劳动人口,起兵之初就将役使官人的褚粲等免官。义熙九年(413年)严格土断。会稽大士族虞亮因藏匿了亡命千余人被刘裕下令处死,并免会稽内史司马休之官职。刘裕一方面尽量减轻编户农民的赋役负担,防止其破产,一方面又通过土断将侨人中的大批小农变为编户农民,以增加国家的赋税收入,加强了国家对自耕农的控制以充实国家的经济力量,为强大的王权奠定了坚实的基础。对于州郡所送秀才、孝廉进行考试,决不允许滥竽充数。在平定刘毅之后,在荆州“宽租省调、节役原刑”,赢得了荆州人士称赞。在驱走司马休之以后,又对荆雍二州“老稚服戎,空户从役”的现象加以改变,规定两州军人和吏年纪在12以下、60以上者全都遣散。称帝后,除去一些杂税,因军事而调发的奴僮送还本主。过去,州、府置将、吏长漫无限制,刘裕规定荆州府置将不能超过2000人,吏不能超过10000人。其他州置将不能超过500人,吏不能超过5000人,以加强中央对地方的控制,力图避免东晋镇割据的重现。
刘裕北伐回到建康后,于义熙十四年(418年)受封为相国、宋公、并受九锡之命。次年一月,刘裕因谶讳说“昌明之后尚有二帝”,就派王韶之与安帝的左右把安帝勒死。刘裕称遗诏奉司马德文即皇帝位,是为晋恭帝。八月,刘裕接受宋王爵位。元熙二年(420年)一月,晋恭帝给刘裕加殊礼。七月,傅亮劝晋恭帝禅位给宋王刘裕,把草拟好的诏书进呈给晋恭帝,让其重抄。晋恭帝竟欣然提笔,对左右人说:“桓玄篡逆,晋氏已失天下。又为刘裕延长了将近二十年,今天的事,本来也就心甘情愿。”就亲笔在红纸上写诏宣布禅位,至此,东晋灭亡。宋王刘裕即皇帝位,改国号为宋,宋朝建立。