丙子日(四月初四)夜里,沈林子率领精锐士兵袭击姚鸾的营垒,斩杀姚鸾,杀死他的士兵数千人。姚绍又派遣东平公姚赞屯驻在黄河边以断绝晋军的水道;沈林子攻打他,姚赞战败逃跑,返回定城。薛帛占据河曲(今山西永济市蒲州镇以南黄河转弯处)前来投降。
太尉刘裕率领水军从淮水、泗水进入清河,准备逆黄河向西进军,先派遣使者向北魏借道;后秦主姚泓也派遣使者向北魏请求救援。北魏主拓跋嗣让大臣们商议,大臣们都说:“潼关是天然险要之地,刘裕用水军攻打十分困难;如果他上岸向北侵犯,形势就会变得容易。刘裕声称讨伐后秦,他的真实意图难以预测。况且后秦是与我们有婚姻关系的国家,不能不救援。(胡三省注:后秦的女子嫁给了北魏,事见上卷义熙十一年。)应该出兵截断黄河上游,不让他向西进军。”博士祭酒崔浩说:“刘裕图谋后秦已经很久了。现在姚兴已死,儿子姚泓懦弱无能,国内多有内乱。刘裕乘他危难的时候讨伐,他的意图一定是要夺取后秦。如果我们阻遏黄河上游,刘裕心中愤怒,一定会上岸向北侵犯,这是我们代替后秦遭受攻击。现在柔然侵犯边境,百姓粮食又缺乏,如果再和刘裕为敌,出兵南下救援后秦,那么北边的敌寇就会更加深入;救援北边,那么南方各州又会危急,(胡三省注:南州指北魏南部边境相州沿黄河各郡。)这不是好计策。不如借给他们水道,听任刘裕向西进军,然后我们屯兵堵塞他的东归之路。如果刘裕攻克后秦,一定会感激我们借道的恩德;如果他不能取胜,我们也不会失去救援后秦的名声;这是两全其美的计策。况且南北风俗不同,即使我们放弃恒山以南的地方,刘裕也一定不能用吴、越的士兵和我们争夺黄河以北的土地,怎么能成为我们的祸患呢!为国家谋划,只应有利于国家,难道要顾及一个女子吗!”商议的人还说:“刘裕向西进入潼关,就会担心我们截断他的后路,使他腹背受敌;如果他北上,那么姚氏一定不会出关帮助我们,看形势他一定会声称向西而实际北上。”拓跋嗣于是任命司徒长孙嵩统领山东诸军事,又派遣振威将军娥清、冀州刺史阿薄干率领步兵、骑兵十万人屯驻在黄河北岸。
庚辰日(初八),刘裕率领军队进入黄河,任命左将军向弥为北青州刺史,留下戍守碻磝(今山东茌平县西南)。
起初,刘裕命令王镇恶等人:“如果攻克洛阳,必须等大军到达后一起进军。”王镇恶等人乘胜径直奔赴潼关,被后秦军队抵御,不能前进。过了很久,军队缺乏粮食,士兵心中疑虑恐惧,有人想放弃辎重返回去投奔大军。沈林子按剑发怒说:“相公立志平定天下,现在许昌、洛阳已经平定,关中即将平定,事情的成功与否,全在于前锋。怎么能挫伤乘胜的士气,放弃即将完成的功业呢!况且大军还在远方,贼兵正气势强盛,即使想回去,难道能办得到吗!我接受命令不顾惜生命,(胡三省注:《论语》中,子张说:“士人见到危险愿意献出生命。”)今天的事情,我自会为将军办理,不知各位君子有什么脸面去见相公的旗鼓!”(胡三省注:相公指刘裕。)王镇恶等人派遣使者飞马报告刘裕,请求派遣粮食救援。刘裕叫来使者,打开战船的北窗,指着黄河岸边的北魏军队让他看,说:“我告诉过你们不要前进,现在你们轻率深入。岸边情况如此,怎么能派遣军队!”王镇恶于是亲自到弘农(今河南灵宝市东北),劝说百姓,百姓争相送来义租,军队的粮食又充足起来。
北魏人用数千骑兵沿着黄河跟随刘裕的军队向西行进;晋军士兵在南岸拉纤,(胡三省注:百丈是用来拉船的,现在南方人用麻绳,北方人用竹子制作。陆游说:蜀人用的百丈,是把大竹子劈成四瓣制作的,像人的手臂一样粗。)遇到大风水流湍急,有漂到北岸的士兵,就会被北魏人杀死或掳掠。刘裕派遣军队攻打他们,军队刚登上岸,他们就逃走,退回去后又来。夏季,四月,刘裕派遣白直队主丁旿(胡三省注:刘裕挑选身强力壮的平民在身边担任警卫,让丁旿统领他们。杜佑说:白直没有每月的俸禄。)率领带兵器的士兵七百人、战车一百辆,渡过北岸,在离水边一百多步的地方,摆下却月阵,两端紧靠着黄河,每辆车上安排七名带兵器的士兵,事情完毕后,让士兵竖起一根白色的羽毛饰物;(胡三省注:《说文解字》说:竖是立的意思。毦是用羽毛编织的饰物。)北魏人不明白他们的意图,都没有行动。刘裕先命令宁朔将军朱超石严密戒备,白色羽毛饰物竖起后,朱超石率领二千人飞马前往,携带一百张大型弩机,每辆车增加二十人,在车辕上设置彭排(盾牌)。北魏人见营阵已经摆好,就进军包围;长孙嵩率领三万骑兵前来援助,从四面逼近营垒攻打,(胡三省注:肉薄指亲身迫近营垒血战。)弩机无法抵挡。当时朱超石另外携带了大铁锤和一千多支长矛,于是把长矛截断成三四尺长,用铁锤敲打,一支长矛往往能穿透三四人。北魏军队不能抵挡,一时间溃散,