桓玄得知在一天之內,楚軍在江乘與羅落橋兩戰兩敗,吳甫之與皇甫敷二將陣亡後,不出所料地大驚失色!連忙招來一批巫師和道士推算運數,並施展法術壓製劉裕。桓玄大概是嚇糊塗了,也不想想,連孫恩都不能壓製劉裕,被打得跳海,他請來的道士法力能超過孫天師嗎?
信心不足的大楚皇帝詢問眾臣:“難道天要亡朕了嗎?” 吏部郎曹靖之說:“如今民眾怨憤,神靈震怒,臣實在不敢說將來會怎麼樣。”桓玄愕然:“民眾也許會怨恨朕(原來他自己也清楚),但朕哪裏得罪天神了?”曹靖之回答:“晉朝的宗廟,沿江飄零(桓玄稱帝後,將晉宗廟先遷琅琊,後遷尋陽);而大楚的宗廟,又上不及祖父(古代新王朝開創時,按慣例要建宗廟祭祀皇帝的至少四代祖先,但桓玄崇拜自己的父親桓溫,看不起祖父桓彝及以上的祖宗,故而楚朝的宗廟違反慣例,隻祭祀桓溫),神靈哪裏肯護佑?”桓玄一愣說:“當初你為什麼不說?”曹靖之道:“當初朝廷上下異口同聲,都認為當今是堯舜一般的盛世,在下怎麼敢唱反調?”
桓玄聽罷,啞口無言了。曹靖之的話道破了古今中外一條真理:越是舉國上下,口徑一致地為統治者唱讚歌,沒有一個唱反調的人的時候,國家的實際情況可能越糟!不管大楚皇帝怎麼想,從後來的情形看,他並沒有反省自己的過錯。現在要臨時抱佛腳,肯定是來不及了。他做出的真正有意義的反應是命桓謙放棄主動攻擊計劃,收縮兵力於覆舟山,按自己原先設想的方案辦。命桓謙和遊擊將軍何澹之駐防東陵(覆舟山東北),後將軍卞範之進駐覆舟山之西,合計兵力約兩萬餘人。
覆舟山,今天的名字叫九華山或小九華山,位於南京城東北,玄武湖南岸。此山山形狹長,頂呈平行,兩頭漸低,形狀就像一隻被翻置的巨大木船,所以被稱為覆舟山。東接京口至建康的大道,北臨後湖,西近台城,周回不過三裏,高不過百米,本是一座普通的小山,如放在雲貴高原的崇山峻嶺間,估計連名字都不會有。但誰讓它處在古都建康城的邊上呢,所處的地理位置太過重要,便成了戰略要地。隻要控製了覆舟山,即可俯瞰建康宮城,建康守軍的一舉一動盡收眼底。
三月二日,京口起事後的第四天早上,劉裕義軍逼近建康。他先讓士兵稍事休息,飽餐一頓,隨後命令將剩餘糧食全部拋入水中,意思很明確:要是打勝了,建康城裏有我們的晚餐!如果打敗了,我們一起死!別指望還有第三條路!然後全軍懷著決死的信念,挺進至覆舟山以東。
與此同時,駐紮在覆舟山的桓謙大軍雖然人數比劉裕義軍多出十餘倍,卻軍心浮動。本來也不是他們不能打仗,他們中很多人都是久經戰陣的北府老兵,平日英勇果敢。但是他們憑什麼給桓家人賣命?桓家人害死了北府多少人?而且將要到來的敵人正是北府的驕傲,百戰百勝的劉裕啊。沒錯,桓謙就是帶著大量北府老兵去覆舟山迎戰劉裕的!不知道這個嚴重錯誤的主要責任人是桓玄還是桓謙,隻能感歎:他們難道不知道,士兵並不是沒有思想,並不是可以讓人隨意擺弄的機器?
決死不是送死,麵對數量上有絕對優勢的敵軍,劉裕沒有草率行事。他吩咐隊伍中的老弱傷兵攜帶大量旗幟,攀登上覆舟山東邊的蔣山(今南京鍾山,因山上有蔣侯廟而得名),一路走一路插旗,不一會兒,蔣山和覆舟山的山穀間就布滿了劉裕義軍的旗幟。楚軍的偵察兵不敢靠近,遠遠望見軍旗遍野,回去報告說:“覆舟山東邊到處布滿了叛軍,人數多得無法看清!”楚軍眾將更加驚慌,桓玄忙派武衛將軍庾頤之率精銳預備隊趕去支援。還未交戰,不知劉裕將如何出招,便早早使用預備隊,可見桓玄的慌亂。還未開戰,楚軍在氣勢上已敗。
準備就緒,劉裕與劉毅等人分率軍士,猛攻桓謙大營。一如既往,劉裕仍然一馬當先,冒著楚軍的刀槍箭矢,帶頭衝鋒!義軍將士們跟隨在後,奮勇作戰,無不以一當十,喊殺之聲震天動地,連在建康宮城中的桓玄都能聽得到!這時東北風正烈,劉裕命人順風縱火,刹那間風助火勢,煙霧彌天,向楚軍方向席卷而去。本來就很不在狀態的楚軍,在劉裕義軍的猛攻之下鬥誌盡失,稍作抵抗便全軍崩潰,桓謙、卞範之等大將都轉身而逃,楚軍大敗!