六月,孙恩乘胜渡海,突然进军丹徒,士兵多达十余万人。刘牢之还驻军山阴,京师震动。刘裕日夜兼程,与起义军同时抵达丹徒。当时敌我众寡悬殊,又加上长途急行军十分疲惫,而丹徒守军又无斗志。孙恩率兵数万,击鼓呐喊攻打蒜山,蒜山居民都拿起扁担准备抵抗。刘裕率部猛攻,大败起义军,起义军跳崖投水而死者甚众。八月,朝廷加封刘裕为建武将军、下邳太守,派他领水军追到郁洲讨伐,刘裕又大败孙恩。孙恩南逃。十一月,刘裕追击孙恩到沪渎,在海盐,又大败孙恩。三战三捷,俘虏的起义军数以万计。起义军自此之后,由于饥饿、疾病、瘟疫,死了一大半,从浃口逃到临海。
“我去,这四维,刘裕简直逆天了。这是准备全满百的节奏啊,厉害啊。”刘辩眼前一片震惊。
在转战三吴的几年中,刘裕屡充先锋,每战挫敌,其军事干略得到初步显露。他不仅作战勇猛,披坚执锐,冲锋陷阵,且指挥有方,富有智谋,善于以少胜多。当时诸将纵兵暴掠,涂炭百姓,独有刘裕治军整肃,法纪严明。他率水军继续追讨孙恩,迫使其投海而死。
孙恩起兵,消耗了晋廷兵力,造成京防空虚,这给盘踞长江上游军事重镇荆州、虎视三吴、伺机而动的桓玄以可乘之机。元兴元年,骠骑大将军司马元显率军西讨桓玄,桓玄也率荆楚大军南攻司马元显。司马元显派刘牢之抵御,刘裕也随军前往。刘牢之率部到达溧州(今江苏溧阳)时,遭遇桓玄所部,刘裕请求发起攻击,没得到同意。刘牢之打算派刘敬宣到桓玄营中讲和,遭到刘裕与刘牢之的外甥何无忌联袂坚决谏阻,刘牢之不听。桓玄攻入建康,杀司马元显,收夺刘牢之兵权,以其堂兄桓修代之。刘牢之惧祸而逃,后自缢身亡。刘裕审时度势,暂投桓玄以行韬晦。由于刘裕屡建军功,于北府旧部中颇有声望,故桓玄也不敢小视他,任命他为中兵参军。
起事,桓玄派刘裕讨伐,杀其大帅张士道。卢循渡海南逃,刘裕因功被加封为彭城内史。十二月,桓玄篡位,对司徒王谧说:昨日看见刘裕,气度不凡,是人中豪杰。于是更对刘裕款待备至,恩宠有加。桓玄的妻子刘氏颇能识人。她多次对其夫说:刘裕行止有龙势虎志,看问题不同凡响,不会久居人下,宜尽早除之。桓玄却说:我欲荡平中原,非此人不行,怎好杀他?等关陇平定,再作计议。同时,桓玄称帝后为消除隐患,欲瓦解北府兵,大力剿杀北府兵旧将,北府军几乎遭到灭顶之灾。正在桓玄盘算之际,刘裕也在暗中和北府兵残余兵将联络,伺机反攻桓玄。
元兴三年二月,刘裕以打猎为名,聚集北府兵残余兵将一千七百余人,在京口举兵起义,歼灭了桓楚在此的兵力,杀死桓修。接着,众人推刘裕为盟主,传檄四方,各地纷起响应。桓玄自从获悉刘裕率众起义后,成天忧心忡忡,想不出对策。有人说:刘裕等力量弱小,哪里具备成气候的力量,陛下何必担忧呢?桓玄回答说:刘裕堪称当代雄才;刘毅家无多少储蓄,却像掷骰子一样捐出百万;何无忌,刘牢之的外甥,很像他舅舅。他们联合起来,共举大事,怎能说他们不会成功呢?桓玄先派手下猛将吴甫之及皇甫敷带领精兵抵抗刘裕,刘裕先于江乘杀吴甫之,至江乘以南的罗落桥时奋力作战,又杀皇甫敷,继续进攻。三月,刘裕进攻覆舟山,并命弱兵登山,持着旗帜分道而行,营造四周皆有士兵,数量很多的假象;而又因桓玄守军大多是北府军出身,面对刘裕都没有斗志,刘裕于是与诸军进攻,顺利以火攻击溃桓玄守军,而桓玄亦弃城西逃。三月壬戌日,刘裕获王谧等人推举,出任使持节、都督扬州、徐州、兖州、豫州、青州、冀州、幽州、并州八州诸军事、镇军将军,徐州刺史。不久其又奉武陵王司马遵承制总百官行事。东晋末年,政治混乱,百官放纵,百业废弛,桓玄虽然也想整治,但众人都不听他的。刘裕以身示范,先以威严约束宫廷内外,百官皆认真供职,二三天时间内,风气大变。刘裕在进建康城后,派诸将追斩桓玄,晋安帝在江陵复位。然而,桓氏势力仍在荆州盘据,并反攻江陵。直至义熙元年,晋军才再收复江陵,驱逐当地桓氏势力,并迎安帝返回建康。不久,刘裕还镇丹徒。
义熙元年,刘裕遣使到后秦,要求后秦归还之前占领的南乡、顺阳、新野、舞阴等淮北诸郡,后秦皇帝姚兴可能鉴于西面战事吃紧,不想再在东面又与刘裕为敌,于是答应将淮北的南乡、顺阳、新野、舞阴等十二郡全部归还给东晋。义熙二年,刘裕因功受封为豫章郡公,食邑万户,获赏绢三万匹。他的僚佐只比原太傅谢安府的僚佐低一等。义熙四年正月,因王谧去世,刘裕听从幕僚刘穆之劝言,入朝商议继任人选。最终获授侍中、车骑将军、开府仪同三司、扬州刺史、录尚书事、徐兖二州刺史,入掌朝政大权。
东晋自偏安以来,时时面临着北方的威胁。祖逖、庾亮、褚裒、殷浩、桓温都曾先后北伐,但无一成功。为了强大自身,刘裕决定兴师北上。
义熙五年,南燕主慕容超袭位,纵兵肆虐淮北,俘虏阳平太守刘千载、济南太守赵元,驱掠百姓千余家。刘裕为抗击南燕,外扬声威,于四月自建康率舟师溯淮水入泗水。五月,进抵下邳,留船舰、辎重,改由陆路进至琅邪。为防南燕以奇兵断其后,所过皆筑城垒,留兵防守。南燕鲜卑人恃勇轻敌,对晋军进入其境不以为虑。慕容超没有采纳征虏将军公孙五楼凭据大岘山之险,使晋军不能深入或坚壁清野、断晋粮道之良策。六月,刘裕未遇抵抗,过莒县,越大岘山。南燕主慕容超先遣公孙五楼、贺赖卢及左将军段晖等,率步、骑兵五万进据临朐。慕容超得知晋兵已过大岘山,自率步骑四万继后。燕军至临朐,慕容超派公孙五楼率骑前出,控制临朐城南的巨蔑水。与晋军前锋孟龙符遭遇,公孙五楼战败退走。刘裕以战车四千辆分左右翼,兵、车相间,骑兵在后,向前推进。晋军进抵临朐南,慕容超派精骑前后夹击。两军力战,胜负未决,刘裕采纳参军胡藩之策,遣胡藩及谘议参军檀韶、建威将军向弥率军绕至燕军之后,乘虚攻克临朐。慕容超单骑逃往城南左将军段晖营中。刘裕纵兵追击,大败燕军,段晖等十余将被斩。慕容超逃还广固。刘裕乘胜追击北上,攻克广固外城。慕容超退守内城。刘裕筑围困之,招降纳叛,争取民心,并就地取粮养战。慕容超被困于广固内城,先后遣使驰往后秦求援。七月,后秦主姚兴派卫将军姚强率步、骑兵一万,与洛阳守将姚绍汇合,统兵共救南燕。并遣使向刘裕宣称,后秦以十万兵屯洛阳,若晋军不还,当长驱而进。刘裕识破姚兴虚张声势,不为所动。不久,姚兴被夏主刘勃勃击败于贰城,遂令姚强撤回。慕容超久困于广固,不见后秦援兵,欲割地、称藩于东晋,刘裕不允。南燕大臣相继降晋。九月,刘裕截获为借兵去后秦的韩范,使其绕城而行,以示后秦救兵无望,城内南燕守军惊恐。十月,晋军在前燕降将张纲的帮助下,制成了飞楼、冲车等攻城器具,加强了攻防能力。义熙六年二月,贺赖卢、公孙五楼率军挖地道出击晋军,被击败,退回内城。刘裕乘机四面攻城,南燕尚书悦寿打开城门迎降,晋军攻入广固内城。慕容超率数十骑突围而走,被晋军追获,南燕灭亡。刘裕以广固久守不降为由,入城后,尽杀南燕鲜卑族王公以下三千人以泄愤。慕容超被押送回师,在建康街头斩首。