孙恩已经不足为患,司马元显决定讨伐桓玄。桓玄对朝廷的威胁比孙恩还大,已经出现割据自立的迹象。司马元显决定先发制人进攻桓玄。
402年,司马元显昭告天下历数桓玄的罪行,率军讨伐桓玄。
司马元显自封征讨大都督,任命刘牢之为前锋都督,率领经过升级扩建的舰队西征。
桓玄也不示弱,提兵迎战。他传檄天下历数司马元显的罪状,率领舰队东征。
晋军集结已毕。司马元显登上战船心里又没底了,迟迟不肯下令开拔。大军就在江边耗着。刘牢之一看他不走,自己也按兵不动。
桓玄顺江东行走了一半的路了都没见到司马元显的军队,心中大喜,知道司马元显怕了自己,挥军直杀建康。
司马元显听说桓玄杀来,弃船上岸,退守建康。
刘牢之对司马元显专权素有不满,不愿再替司马元显卖命,暗中投靠了桓玄。
桓玄大军兵临城下。司马元显列阵迎战却不敢临阵指挥,躲在家里。主帅怂成这样,手下将士更心虚了。桓玄的军队在城下列阵,大喝一声“放仗”(放下武器)!司马元显的兵“哗”一下都跑了。
桓玄兵不血刃进了建康。
他控制了朝廷,以晋安帝的名义将司马元显一家处斩、司马道子流放。朝中文武对司马元显素无好感,默然接受桓玄取代司马氏的现实。
桓玄任命刘牢之为会稽内史,让他交出兵权。刘牢之大怒,召集手下将领准备跟桓玄开战。他的参军刘袭对他说,你当初背叛王恭投降司马元显,刚不久又背叛司马元显投降桓玄,现在又要背叛桓玄。“一人三叛,何以自立”!刘袭说完扭身走了。他的部将也随之散去。刘牢之羞愧难当,上吊自杀。他的军队和地盘全部被桓玄接管。
孙恩趁东晋内乱又上岸袭扰。但他的军队这时已经很少了,东晋地方部队就把他打败。孙恩不想被官军抓俘虏,跳海自尽。他的追随者几百人也跟着跳了下去。
孙恩死后,残余部众推举孙恩的妹夫卢循为首领。
桓玄刚刚入主建康,不愿多事,试图诏安海盗武装,任命卢循为永嘉太守。这给了海盗喘息的机会和东山再起的机会。“循虽受命,而寇暴不已”。卢循虽然接受了任命成为ZF官员,但依然改不了海盗的残暴习性。
兵祸之后随之而来的是DJH。“三吴大饥,户口减半,会稽减什三、四,临海、永嘉殆尽”。吴国旧地人口减少一半。会稽郡人口减少十之三四。临海(浙江台州章安镇)、永嘉(浙江温州)的百姓几乎都死光了。
桓玄入主建康后清洗朝堂,把司马道子、司马元显一派都撵走。那些人多是阿谀奉承的小人。朝野对此表示欢迎,以为国家有了复兴的希望。没想到桓玄哪里是为了国家,不过是为了自己更好地掌控朝廷罢了。他上来跟司马氏一个德行。
桓玄清洗完司马一党开始清洗刘牢之的部下,杀了包括刘袭在内的刘牢之旧将。当初如果不是刘袭反对刘牢之起兵反对桓玄,桓玄能不能在建康待得住都是一码事。等他在建康站稳脚跟便开始兔死狗烹。
桓玄以自己喜恶清洗朝廷。很多文武官员担心不测,流亡南燕或后秦、北魏。刘袭的哥哥刘轨起兵为刘袭报仇,被桓玄击退后北逃南燕。刘牢之的部分旧将也随之逃离东晋。
桓玄没有杀刘裕。刘裕是一位骁勇善战的大将。桓玄缺少这样的人才,对刘裕加以笼络、重用。
他派刘裕去打卢循。卢循接受招安却仍然为非作歹,行劫施暴,竟然公然派兵袭击东阳(浙江金华)。桓玄决定彻底剿灭这帮海盗。
刘裕果然善战,连战连胜,把卢循打得狼狈逃窜。
卢循不敢再待在江浙,渡海向南逃走。后来卢循夜袭番禺(广东广州),占领了广州。东晋因为桓玄之乱无暇顾及南疆。卢循在广州盘踞多年。
桓玄清洗异己之后相信朝廷已在完全掌控在自己手中,开始谋求篡位。