沒過多時,卻見敗將徐赤特逃到石頭城,劉裕問清原委後,極為憤怒:今天差點因為你小子的過錯全盤皆輸!責備他違背軍令,擅自出擊,敗陣之後又棄軍而逃,說罷吩咐立即將其斬首示眾。然後劉裕命朱齡石率一千名精銳鮮卑兵士先行趕往南塘支援沈林子,其餘大隊人馬隨後跟進。從此項命令來看,這一千鮮卑兵士要有能力趕在其他各隊晉軍之前到南塘,機動性應該高於其他晉軍,因此很可能就是前不久索邈帶著沿江作秀的鮮卑重騎兵。
徐道覆的第二輪攻擊開始了,他沒想到兵力微弱的沈林子不退反進,已搶先占領南塘堤道的北端,徐道覆軍擁擠在堤道上無法展開,無從施展兵力上的優勢,兩軍殺作一團,交戰多時仍不分勝負。徐道覆揮軍反複攻擊,將戰線一點點往北擠,沈林子畢竟兵少,在徐道覆軍的車輪式攻擊下漸漸難以支撐,但正在此時,朱齡石的援兵到了。
朱齡石率領的一千鮮卑兵士可能是騎兵,南塘的狹窄地形根本沒給戰馬提供馳騁的空間,因此他們全部步戰,排成密集的隊形,端著四米多長的長槊,像一道長滿鋒利矛尖的鋼鐵城牆,沿著堤道緩緩推進。
五鬥米道軍的強項是水戰,陸戰使用的主要是短兵器,如果是在開闊地上一對一地格鬥,用這些武器對戰笨重的長槊並不落下風。但在這樣重兵對抗的戰場,麵對密集的槊尖,徐道覆率領的士兵無處可避,根本沒有機會靠近對手便被亂矛捅死!而且因為兵力太密集,前麵的人想撤退都不容易,於是一番戰鬥下來,徐道覆軍前鋒數百人戰死,後邊的人驚駭而退,晉軍損失卻非常小。徐道覆見已無力再攻,隻好收兵退回丹陽郡城。
稍後,盧循率領大軍到達丹陽郡城,劉裕也率軍渡過秦淮河,在南岸築壘布陣。盧循見徐道覆打了敗仗,而劉裕也已趕到,不敢再打,又從丹陽郡城撤回蔡洲,結束了這次雷聲大雨點小的會戰。此戰盧循、徐道覆開局打得不錯,他們第一次成功地算計了老對手劉裕,將晉軍主力調到北線,然後又用誘敵伏擊戰術擊敗徐赤特,差點洞穿晉軍南線的木柵防線,實屬難能可貴。但徐道覆的後續行動沒打好,尤其不該在第一輪攻擊後,在南塘以南休整軍隊,導致沈林子搶先控製了南塘要隘,使這次進攻功敗垂成。晉軍方麵,沈林子是此戰的最大功臣,正是因為他臨危不亂,應對得當,撐到朱齡石的援軍到達,終於轉敗為勝。劉裕在此戰中的表現略失水準,整個過程有點被動,這大概與他此時隻想堅守不戰,等待時機有關。劉裕最大的失誤是用人不當,本身的指揮並沒有大破綻,且此時晉軍的處境比盧、徐二人初到時已大幅度改善,就算徐道覆成功突破了沈林子的防禦,要想真正打敗劉裕,奪取建康,恐怕成功的機會仍很渺茫。
盧循在精心策劃的軍事行動小敗之後,再不敢貿然發動攻擊,隻是分兵襲擊京口和沿江各城,但因為晉軍防備嚴密,都未獲得太大戰果。因為晉軍此時缺少足夠的戰船,當然不願以己之短,擊敵之長,劉裕也沒有進攻蔡洲,隻是任命庾悅為江州刺史(總部尋陽,現在還在盧循的控製之中),讓他組織力量去騷擾盧循的後方。因此在之後一個多月內,雙方都未再發生大規模的交戰。
時間一久,人數眾多又遠離後方的盧循大軍漸漸感到支持不住了。在建康附近的各郡縣要麼是守備太強,要麼是已經堅壁清野,都弄不到多少糧食。於是盧循找徐道覆商議說:“如今軍隊已經疲憊不堪,再留在這裏,不被劉裕打垮也要被饑餓拖垮!不如先回尋陽,然後攻取荊州。我們占有了荊、江兩個大州,就可以依仗天下的三分之二,與建康對抗。”徐道覆雖然心有不甘,但麵對客觀情況也隻能如此了。
五鬥米道軍的兩大頭目達成共識之後,七月十日,盧循率軍從蔡洲西撤,回師尋陽,隻留下範崇民率五千兵守衛南陵(今安徽貴池縣西南),阻擋晉軍追兵。在確定盧循已經退走後,建康城宣布解除戒嚴,曆時約兩個月的建康保衛戰終以晉軍的勝利而告結束,劉裕終於憑借著過人的毅力、才華,還有運氣,度過了他一生事業中最大的一次危機。