刘裕抵达下邳,用船装载军用物资,亲自率领精锐步兵返回。到山阳(今江苏淮安)时,听说何无忌战败身亡,担心京城失守,就脱下铠甲,加速行军,与几十人赶到淮河岸边,向路人询问朝廷的消息,路人说:“贼军还没到,如果刘公回来,就没什么可担心的了。” 刘裕大喜。准备渡江时,风势猛烈,众人都觉得困难。刘裕说:“如果天命帮助国家,风就会自行停止;如果不是这样,淹死又有什么妨碍!” 当即下令登船,船刚移动,风就停了。渡过长江后,抵达京口,众人这才安心。夏季,四月,癸未日(初二),刘裕抵达建康。因江州失陷,上奏表请求交回印绶,朝廷下诏不同意。
青州刺史诸葛长民、兖州刺史刘籓、并州刺史刘道怜各自率领军队进入建康保卫。刘籓,是兖州刺史刘毅的堂弟。刘毅听说卢循侵犯,准备率军抵抗,却生病卧床;病愈后,准备出发。刘裕写信给刘毅说:“我过去多次讨伐妖贼,熟悉他们的战术变化。贼军刚获得胜利,锐气不可轻视。如今我这边修造战船即将完成,准备和你一起进军。平定贼军后,上游的重任,都交给你。” 又派刘籓前往劝说阻止他。刘毅发怒,对刘籓说:“过去只是因为一时的功劳推举他罢了,你难道真以为我不如刘裕吗!” 把信扔在地上,率领两万水军从姑孰(今安徽马鞍山当涂)出发。
卢循起初入侵时,派徐道覆进攻寻阳,自己率军攻打湘中(今湖南中部)各郡。荆州刺史刘道规派军队迎战,在长沙战败。卢循进军到巴陵(今湖南岳阳),准备进攻江陵。徐道覆听说刘毅即将到来,派人快马告诉卢循说:“刘毅的军队很强大,成败关键就在这一战,应当合力击败他。如果这一战胜利,江陵就不值得担心了。” 卢循当天从巴陵出发,与徐道覆合兵东下。五月,戊午日(初七),刘毅与卢循在桑落洲(今江西九江东北长江中)交战,刘毅的军队大败,他弃船上岸,率领几百人步行逃跑,其余部众都被卢循俘虏,丢弃的军用物资堆积如山。
起初,卢循抵达寻阳时,听说刘裕已经返回,还不相信;攻克刘毅的军队后,才确认消息,他和党羽们相视失色。卢循想退回寻阳,攻取江陵,占据江州、荆州来对抗朝廷。徐道覆认为应当乘胜直接进攻建康,坚持争辩。卢循犹豫了几天,最终听从了徐道覆的建议。
己未日(初八),朝廷宣布大赦。刘裕招募百姓当兵,赏赐标准和当初京口起兵时相同。征发百姓修筑石头城(今江苏南京城西)。有人建议分兵防守各渡口要地,刘裕说:“贼众我寡,如果分兵驻守,就会让敌人摸清我们的虚实;而且一处失利,就会动摇三军的士气。如今把军队聚集在石头城,根据情况随时应对,既让敌人无法判断我们的兵力多少,又能集中力量。如果后续军队逐渐集结,再慢慢商议其他策略。”
朝廷听说刘毅战败,人心惶惶。当时北伐的军队刚返回,将士大多受伤生病,建康的士兵不足几千人。卢循攻克江州、豫州(刘毅驻守的地区)后,拥有十多万士兵,战船车马绵延百里,楼船高达十二丈,战败逃回的人争相诉说贼军的强盛。孟昶、诸葛长民想护送安帝渡过长江,刘裕不同意。起初,何无忌、刘毅南征时,孟昶预料他们一定会战败,后来果然如此。到这时,孟昶又认为刘裕一定无法抵抗卢循,众人大多相信他的话。只有龙骧将军东海人虞丘进在朝廷上反驳孟昶等人,认为不会这样。中兵参军王仲德对刘裕说:“明公您是顺应天命的辅臣,刚建立大功,威震天下,妖贼乘虚入侵,如今听说您凯旋归来,一定会溃散。如果您先逃跑,就会和普通人一样,普通人发号施令,怎么能威慑众人!如果这个计划被采纳,我请求从此告辞。” 刘裕非常高兴。孟昶坚持请求不已,刘裕说:“如今重要的藩镇沦陷,强大的贼军逼近,人心恐惧,没有坚定的意志;如果一旦迁都,就会土崩瓦解,江北又怎么能到达呢!即使能到达,也不过是延长几天寿命罢了。如今士兵虽然少,但足够一战。如果能取胜,君臣就能共享太平;如果厄运必定到来,我会战死在宗庙门前,实现我历来以身报国的志向,不能躲藏在民间苟且求生。我的计划已经决定了,你不要再多说!” 孟昶因自己的建议不被采纳而愤怒,又认为一定会战败,于是请求自杀。刘裕发怒说:“你姑且再打一仗,死又何必着急!” 孟昶知道刘裕最终不会采纳他的建议,就上奏表自责说:“刘裕北伐时,众人都不同意,只有我赞同他的计划,导致强贼乘虚而入,国家危急,这是我的罪过。