公元402年,东晋朝廷下令司马元显讨伐桓玄,得知消息的桓玄先下手为强,在双方内部均不很稳定的情况下,先声夺人,取得了初战的胜利。初战告捷,极大地鼓舞了西军士气,相反,朝廷方面却显出败象。首先是司马元显没有采纳张法顺诛杀桓玄族人的建议,致使桓玄的族人依然盘踞在京师,他们当然不会与朝廷同心,因此,东军的军事机密源源不断地泄漏到桓玄那里。其次,大敌当前,司马道子父子却依然嗜酒如命,整日昏醉。最后,东军的关键人物刘牢之并不支持西讨行动。
刘牢之凭借着背叛王恭登上高位,不论从出身上抑或是道义上,均不被社会舆论所容。对他而言,有北府兵存在,就有他刘牢之的一切,而有桓玄这个异己势力,司马元显就不得不看重他刘牢之。一旦消灭了桓玄,朝廷的力量加强以后,极有可能将矛头对准他自己,把兖州纳入皇室手中。因此,刘牢之从一开始,就对此次讨伐行动不积极,只是不得已才率领兖州文武驻屯在溧洲。本来,刘牢之是前锋都督,司马尚之的豫州军队次之,然而,桓玄的西军打败司马尚之以后,刘牢之的军队尚未离开溧洲半步,这说明刘牢之一直在观望。
在刘牢之看来,如果桓玄失利,自己也只好与朝廷一道,先将桓玄灭掉,而如果桓玄得胜,则暂时投靠桓玄,除掉司马道子父子,然后,再瞅准时机,灭掉桓玄,登上最高权力。豫州军队瞬间覆灭,更让他坚定了投靠桓玄的打算。
桓玄也深知豫州军队当然无法与兖州的北府军相提并论,长期以来,豫州军队只是作为兖州军队的辅助力量,击败豫州军队,虽然鼓舞了西军的士气,但要想一举消灭百战百胜的北府军,谈何容易?在这种情况下,桓玄派遣刘牢之的族舅何穆前往劝降。何穆对刘牢之劝说道∶“你与桓玄无冤无仇,倒不如改变立场,保全富贵,则可以与金石一般长保富贵!请你三思。”刘牢之自认为手握强兵,自己的才能也足以经营江东,遂接受了何穆的劝说,开始与桓玄联络。
此时,桓玄之军已经进抵溧洲附近。建武将军、下邳太守刘裕请求刘牢之主动出击,刘牢之没有同意。刘牢之的外甥、东海中尉何无忌,刘牢之的儿子刘敬宣均与刘裕关系很好。当刘裕、何无忌听说刘牢之将要投降桓玄时,两人极力劝谏,但刘牢之始终不听。
元兴元年三月一日,刘牢之派遣刘敬宣前往桓玄军中作人质,向桓玄投降,桓玄任命刘敬宣担任自己的谐议参军。其实,桓玄并没有将刘牢之看做是自己人,他早已决心除掉刘牢之了,不过,即使如此,他依然大摆筵席,隆重地招待刘敬宣。桓玄是个书画迷,为了安抚刘敬宣,他将自己珍藏的字帖、名画拿出,让刘敬宣观赏,刘敬宣对桓玄的阴谋毫无察觉,桓玄手下的官员都暗自发笑。
司马元显的中军还没有出发,就传来了刘牢之投降、桓玄之军已经进抵新亭(南京市南)的消息。司马元显赶紧弃船登岸,率军退守京师的国子学堂。三月三日,也就是刘牢之投降两天之后,司马元显又命令部队出城,在宣阳门外扎营。此时,建康城内谣言四起,人心惶惶,有人甚至说桓玄已经推进到朱雀桥外,司马元显的很多部下都偷偷溜走了。司马元显率军将要回到宫城时,充当桓玄的先头部队、刘牢之的参军张畅之率众袭来,人人拔出长刀,冲着禁军高声呼喊∶“放下武器!”霎时间,禁军将士四散逃命。司马元显骑马逃往司马道子的东府避难,身边只有张法顺一人追随。逃归相府的司马元显询问父亲有什么办法,司马道子只是落泪,再无一言。桓玄命令太傅从事中郎毛泰率众逮捕了司马元显,将其押送到新亭。
毛泰将司马元显送至新亭后,桓玄命人将司马元显捆绑在船前的栏杆上,历数他的罪状。三月四日,在桓玄的授意下,东晋朝廷下令恢复隆安六年的年号。当日,晋安帝派遣侍中王谧前往桓玄军中犒劳,桓玄遂率军进入京师建康。晋安帝下诏解除戒严,并任命桓玄为总百揆(统管文武百官)、侍中、都督中外诸军事、丞相、录尚书事、扬州牧,兼徐州刺史,其原职荆州、江州刺史不变。
桓玄趁着兵威,立即着手培植势力。他把司马道子父子的扬州、徐州刺史职位拿到手以后,任命哥哥桓伟为荆州刺史,堂兄桓谦为尚书左仆射、加中军将军,任命桓谦之弟桓修为都督六州诸军事、右将军、徐州兖州刺史、假节,任命通风报信的堂兄桓石生为前将军、江州刺史,卞范之为建武将军、丹阳尹。
除了在朝廷内外大肆安置自己的亲信以外,对于朝廷的名士和改投自己的故交,桓玄也都一一加以重用。京师的各个门阀士族也都乐于看到桓玄终结司马道子父子专权的局面,恢复司马氏与各个门阀共治的状态。
史书称,桓玄刚入京的时候,斥去奸佞,提拔贤才,京师上下都十分高兴,希望他能结束隆安以来持续混乱的局面。