盡管此時孫天師的聲勢依然浩大,司馬元顯親自指揮水軍迎擊孫恩,卻連戰連敗,隻得逃回建康,連老牌酒鬼司馬道子都嚇得暫時放棄了喝酒,跑進蔣侯廟整天祈神保佑。但實際上,孫恩已錯過了攻取建康的最好機會,等他慢吞吞地花了數天時間終於到達建康城西的白石壘時,司馬尚之的軍隊已進駐建康,劉牢之已到達新洲(建康北麵長江中的小島),孫恩一度占有的優勢一去不返。
麵對形勢的變化,孫恩知道攻取建康已不可能,隻能乘晉軍對他的合圍完成之前,盡快突圍東走。於是,孫恩未攻建康,而是穿過新洲附近的江麵(不知為何劉牢之沒有阻擊)出長江,由海道向東北方前進,直奔鬱洲(江蘇連雲港東雲台山一帶,當時是一個海島,傳說中西漢初年田橫率五百壯士逃亡之地)。同時分偏師攻破廣陵(今江蘇揚州),殲滅晉軍三千餘人,牽製晉軍追兵。
寧朔將軍高雅之受命窮追孫恩,直至鬱洲。孫天師火了,我就算打不過劉裕,還擺平不了你麼?回師一場惡戰,再次大敗晉軍,生擒高雅之。
晉軍在廣陵、鬱洲連遭敗績的消息讓當朝掌權的司馬元顯很上火,不過更讓他著急的消息來自西邊:已經控製了大半個晉朝的桓玄,聽說孫恩迫近建康,立即調兵調糧,“忠肝義膽”地表示,他對孫恩侵犯帝都的嚴重事態深表關切,要親率大軍前來建康勤王!司馬元顯又不是傻瓜,自然清楚桓玄要是進京,根本沒有好事。兩頭都要命,會稽王世子那幾天真是度日如年啊!幸好孫恩行軍緩慢,劉牢之等趕得及時,才算把他攆跑了。如蒙大赦的司馬元顯連忙以晉安帝名義下詔,褒獎桓玄的忠心,但既然賊寇已經敗退,就不用再興師動眾了!
雖然桓玄一時沒了借口,隻得暫時罷兵。但該來的終究會來,司馬元顯不能不早作準備。目前這種危險的局麵必須打破,為了解除家門口的威脅,不給桓玄東下提供口實,一定得把孫恩從鬱洲趕出去。而要完成這一任務,還有誰比冉冉升起的北府新星劉裕更合適呢?於是在這一年八月,司馬元顯下詔,屢建戰功的劉裕被提拔為建武將軍、下邳太守,正式成為高級將領,並受命組織水軍進攻鬱洲,討伐孫恩。
當初劉裕隻指揮幾百人的時候,孫恩已經不是他的對手,現在劉裕指揮一支像樣的軍隊了,孫天師當然更招架不住。兩軍在鬱洲一番交戰,孫恩戰敗,被迫棄鬱洲南下,被俘虜的晉將高雅之又被劉裕解救了出來。十一月,孫恩退到滬瀆,被劉裕追上,於是第二次滬瀆會戰,孫恩大敗,繼續南撤。接著在海鹽再戰,孫恩又一次被劉裕打敗,再也無力支撐,隻得逃往舟山群島,結束了他最有野心的第四次登陸作戰。
第二次鬱洲會戰、第二次滬瀆會戰、第二次海鹽會戰,三戰下來,孫恩大軍陣亡及被俘達數萬人之多。孫恩雖然號稱十幾萬部眾,但那是所有手下教徒,男女老少拖家帶口一起算的數字,真正能用於作戰的精壯男丁也就幾萬人,經此慘敗之後,元氣大傷,一蹶不振。
從整個孫恩第四次登陸作戰的經過來看,認為孫恩軍不過是一群烏合之眾,不堪一擊的觀點是值得商榷的。其實,除了和劉裕交戰的部分,孫恩與晉朝正規軍的作戰結果其實是勝多敗少,打敗過的晉將前有謝琰,後有袁崧、司馬元顯、高雅之等,不能簡單用無能之輩來看待孫天師。孫恩之所以給人留下無能的印象,隻是因為他太倒黴了,偏偏遇上劉裕!
劉裕因為在此次對付孫恩的卓越表現,名聲和地位都迅速提高,等孫恩逃回海島時,劉裕已越過了眾多老將,在北府軍中的威望僅次於劉牢之了。劉牢之在這次戰事中的表現卻大失水準,行動遲緩,反應遲鈍,無複當年的英勇果敢,給人暮氣沉沉的感覺,也許這正意味著北府軍即將迎來新的時代吧。