公元398年,桓玄、殷仲堪、杨佺期以讨司马尚之为名,进兵建业。后因王恭被杀,退回荆州。后来,桓玄火并了殷仲堪和杨佺期。东晋朝廷命他都督荆、江、司、雍、秦、梁、益、宁八州和扬、豫八郡诸军事,兼任荆、江两州刺史。桓玄又以兄桓伟为雍州刺史,从子振为淮南太守,朝廷也只好依他。这样一来,桓玄所控制的地区,以荆州为基础,西起梁(今陕西省南部),益(四川),宁(云南),东抵建业近郊。
但桓玄并不以此为满足,他想作皇帝。他写信给元显,指责朝政日坏,在朝君子不敢说话,致酿成孙恩之祸。元显看了信,非常害怕。谋士对他说,桓玄刚占据荆州,人情未附,应乘此时机,进军讨伐。元显决定发兵征桓玄,以镇北将军刘牢之为前锋都督,自为骠骑大将军,征讨大都督,都督十八州诸军事。桓玄听得元显发兵,一面发檄文数说元显罪状,一面挥师东下,直指建康。历阳一战,俘豫州刺史司马尚之。司马休之败逃。元显所依靠的是北府将领刘牢之,但刘牢之率军投降了桓玄。元显不战而溃,被俘。桓玄入建业,杀元显。公元403年,桓玄废晋帝,自为皇帝,国号楚。
北府兵是一支较强的军事力量,桓玄代晋后,对北府兵一直心存疑虑。当时北府兵最高的将领是刘牢之。刘牢之先是背叛王恭投降元显,后又背叛元显投降桓玄,桓玄对刘牢之不信任,对北府兵也存有戒心。桓玄开始有计划地消灭北府兵中有影响的人物。他先借故杀了刘牢之,后又杀北府诸将。
安帝元兴三年(404)二月,刘裕在京口,刘毅在广陵,同日起兵。刘裕杀徐、兖二州刺史桓脩。刘毅杀青州刺史桓弘,领兵渡江至京口与刘裕军会合。众人共推刘裕为盟主,统众向建康进发。桓玄听得刘裕等起兵,甚为震惊,一面以侍中、后将军卞范之屯复舟山西,桓谦屯复舟山东北,一面派顿丘太守吴甫之、右卫将军皇甫敷率兵东向迎敌。
刘裕和吴甫之、皇甫敷的军队在江乘(今江苏龙潭)相遇。刘裕手执长刀,大呼冲阵,众皆披靡、裕手起刀落,斩吴甫之于军前。刘裕军进至罗落桥,又大败皇甫敷军,斩皇甫敷。吴、皇甫,皆桓玄之骁将。两将死,桓玄大惧。刘裕军进至复舟山东。桓谦的兵,多北府旧兵,素畏刘裕,闻刘裕到,没有斗志,刘裕与刘毅分兵为数队,进突桓谦阵。刘裕身先士卒,将士皆殊死战,呼声动天地,无不以一当百。桓谦军大溃。
桓玄知桓谦等大军败绩,遂仓惶离开建康逃回荆州,收集战士,得二万多人,楼船、器械甚盛,遂又帅军东下,与刘裕大战于峥嵘洲(今湖北黄冈附近)。此战桓玄败北,被杀。桓家在上游荆州等地是有基础的,桓玄虽死,桓谦和桓玄从子桓振等在荆州继续抗击刘裕,有一年左右,才最后被消灭,桓玄退回荆州时,是带着东晋安帝一起走的。安帝是个白痴,又被刘裕迎回去,复了皇位。东晋军政大权,遂落入刘裕之手。