劉裕等人之所以沒有在攻克建康後立即出兵追擊桓玄,是因為剛建立幾天的義兵成軍倉促,沒有水軍,於是桓玄才能從容“遷都”江陵。但沒過多久,建康的晉朝新政府經過高效率的籌備,到四月中,一支約一萬人的討伐軍便組建完成,大軍以劉毅為主帥,何無忌、劉道規為副,進軍荊州。劉裕本人坐鎮京口,遙控中央。
桓玄得知晉軍開始西進後,采取了三手準備:第一,當然是征集荊州各郡的武裝部隊在江陵集結,重組軍團;第二,為了給重整軍備贏得時間,他派武衛將軍庾稚祖、江夏太守桓道恭等,率數千軍隊增援駐防湓口的龍驤將軍何澹之,以加強江州的防禦力量;第三,采取牽製劉毅西進兵團的行動,讓侄子桓歆聯絡氐族酋長楊秋,合兵進攻曆陽,威脅劉毅軍的側後。
桓歆和楊秋行動很積極,首先出動,可惜運氣很糟。剛剛上任的豫州刺史魏詠之與諸葛長民、劉敬宣等率州兵迎頭痛擊。這幾位都不是好招惹的,合力一戰,大敗桓楚帝國的這支少數民族雇傭軍。雇傭軍司令楊秋被斬於曆陽以北的練固,桓歆隻身逃脫。楚軍在曆陽的反攻失敗,未能起到預期的牽製作用。劉毅等部繼續西進,抵達桑落洲(尋陽東麵長江江麵上的一個小島,由於長江航道變化,今天已不存在。具體位置約在今安徽省宿鬆縣彙口鎮歸林灘一帶)。
四月二十三日,駐守湓口的楚軍大將何澹之、胡藩等主動出擊,率領艦隊進攻桑落洲。劉毅、何無忌、劉道規等也不示弱,出動所有戰船,兩軍在桑落洲以東的長江江麵上展開對峙,暫時沒有開戰。何澹之的軍隊雖然隻是楚軍偏師,但數量仍超過了剛剛組建的劉毅、何無忌部水軍,從表麵上看,楚軍略占上風。
何澹之的作戰計劃是利用己方數量上的優勢,從兩翼包抄晉軍。為此他離開陣營中央的旗艦,悄悄轉移到側翼指揮作戰,為了不讓晉軍察覺,他讓人在自己原本乘坐的旗艦上插滿軍旗,布置得像開屏的孔雀尾巴,招搖於兩軍陣前。隻可惜,他忘記了一點:戲一旦演過了頭,也就不像了。
在東邊晉軍的戰船上,何無忌注視著楚軍動向,突然發現一個不尋常的現象:楚軍陣中有一條最大的戰船特別醒目,裝飾豪華,旗幟鮮明,像是要去參加狂歡節遊行。何無忌不禁笑了,這招是劉裕用老了的,他跟隨劉裕作戰多次深知其詳。何澹之不但在關公麵前耍大刀,而且學得又不到家,照著東北虎,畫成了波斯貓!於是,何無忌對眾人說:“何澹之肯定不在旗艦上,我們應該集中兵力,從中央突破,俘獲他的旗艦!”眾人不解:“既然何澹之不在旗艦上,那麼俘獲旗艦又有什麼用?”何無忌回答:“如今敵強我弱,硬打不易取勝。何澹之既然不在中軍,那麼敵人的中軍必然很弱,我軍集中兵力攻擊,一定可以奪取他的旗艦。而且何澹之不在旗艦上,他的部下兵士多半不會知道,他們一旦見到旗艦被奪,必然驚慌失措,士氣低落!而我軍士氣倍增,何愁不勝?”
劉毅、劉道規等都讚同何無忌的意見,於是晉軍主動出擊,猛攻楚軍中央。何澹之的旗艦雖然外表光鮮,但旗多人少,位置過於突出,移動也不靈便,晉軍迅速圍上靠近,攀上船舷猛攻,很快將這艘戰船奪了下來。得手後,何無忌、劉道規等乘機讓士兵高呼:“何澹之被抓住了!”然後一船傳一船,不一會兒,楚軍主帥被擒的消息已響徹整個戰場!由於楚軍旗艦被奪,楚軍士卒大多信以為真,再加上自劉裕起兵以來,楚軍屢戰屢敗,本就是驚弓之鳥,此時無不心膽俱裂,紛紛潰逃!晉軍士兵多數也上當了,因而銳氣百倍,奮力攻擊!
自作聰明的大楚龍驤將軍此刻傻眼了,費盡心力地精心布置,反而弄巧成拙!眼見已經一敗塗地,何澹之連忙腳底抹油,趕快開溜,逃回江陵!死心眼的相國參軍胡藩還不肯逃,奮力苦戰,結果所乘戰船被晉軍以火攻擊沉。胡藩身穿著全套盔甲跳入江中,在江底潛行了三十多步,才得以登岸,欲投江陵,因為道路已被晉軍封鎖,隻得向南逃往豫章(今江西南昌)。後來,劉裕聽說胡藩忠直的事跡,派人到豫章殷勤相邀,拜他為參領軍軍事,胡藩便複出投晉,成為日後劉裕麾下的名將之一。
晉軍乘勝追擊,迅速占領了湓口,隨後拿下尋陽,江州光複!因為安帝已被桓玄帶去荊州,劉毅等人隻得到了晉朝曆代皇帝的靈位牌,派人將它們送回建康。至於那位被劉裕在檄文中宣布為“革命同誌”的刺史郭昶之,此後下落不明。