义熙十三年(公元年)二月,就在后秦内讧不断之时,东晋太尉刘裕下达了总攻命令。在彭城一直观察了五个月之久的他,终于率领十万大军离开彭城西进,正式拉开了灭亡后秦的大幕。
他以第三子、时年11岁的彭城公刘义隆为冠军将军留守彭城,东晋朝廷晋升其为使持节,监徐州、兖州、青州、冀州诸军事,徐州刺史、冠军将军如故。
根据刘裕的命令,暂时停留在洛阳一带的晋军先头部队要等到刘裕的大军到来以后,方可一起向西攻击前进,这是因为刘裕还担心晋军会与北魏军开战。王镇恶、檀道济等众将当然没有刘裕那样的大局观,大家一致认为,面前的后秦军往返于潼关、长安之间,早已疲惫不堪,前线战机瞬息万变,“将在外,君命有所不受”,现在正是给予后秦军致命一击的绝佳时机,岂容错过?
王镇恶等将的决策也不用深责,这是因为此时的后秦已经情势大变,原本驻守在洛阳与潼关之间崤函险要的后秦军,因为姚恢的叛乱而被西调,后秦军不得不放弃了崤函险要,仅仅退守潼关。王镇恶等将立即敏锐地捕捉到了战机,以较少的兵力未经激战即顺利突破了崤函险要,直接进抵潼关之下,并趁虚试图攻下潼关。在洛阳休养了三个月的晋军将士们早已按捺不住,求战心切的晋军将士不待刘裕大军的到来,即朝着潼关方向扑来。
东晋龙骧将军王镇恶率军迅速推进到渑池,接着,王镇恶又派遣司马毛德祖进攻蠡城,后秦守军溃散而逃,晋军生擒后秦弘农太守尹雅,谁知尹雅不久就杀掉了晋军看守,逃回了潼关。此时,从渑池一直到潼关之间,后秦军队已经组织不起有效的抵抗,晋军浩浩荡荡朝潼关杀去。
在向潼关行进的途中,在陕城,这支晋军又一分为二,龙骧将军王镇恶率领其本部人马继续朝潼关挺进,冠军将军檀道济、振武将军沈林子则率领其本部人马从陕城以北渡过黄河,进攻襄邑堡,后秦建威将军薛帛逃奔河东(山西夏县)。这当然还是进攻潼关的老套路∶以一部正面进攻潼关,以另一部渡过黄河占领蒲阪,再由蒲阪西渡黄河跃入关中,让潼关天险失去作用。
檀道济、沈林子所部北渡黄河,初战告捷后,即以大部兵力向西,进攻蒲阪。但蒲阪是河东重镇,后秦经营很久,即便是北魏道武帝拓跋珪取得柴壁大捷后,以全师之力也未能攻破蒲阪。虽然晋军作战勇猛,但怎奈蒲阪守备严密,晋军无法攻破。而且渡河以后,檀道济在进攻蒲阪之前,派出一支部队,由将军苟卓北上进攻后秦囤聚军粮的匈奴堡,目的是夺取宝贵的粮食。由于兵力不足,苟卓的这支部队也被驻守此地的后秦宁东将军姚成都击败。
后秦主姚泓对晋军的攻击立即作出反应。他先派武卫将军姚驴解救蒲阪,胡翼度增援潼关,然后又加封姚绍为太宰、大将军、大都督、都督中外诸军事、假黄铖,改封鲁公,侍中、司隶、宗正、节录并如故,朝政大事全部由其做主。姚绍坚决推辞,但姚泓不许。于是,姚绍率领武卫将军姚鸾等人带领五万步骑,进居潼关,阻挡王镇恶之军。而此时已经来到蒲阪城外的后秦姚驴所部,与城内的并州刺史尹昭里应外合,一起夹攻檀道济之军。檀道济见此情形,转攻为守,固守营垒不战。
王镇恶、檀道济等将领的行动,已经使该部晋军陷于十分危险的境地∶首先,从全局上看,刘裕的大军刚刚离开彭城,原本进攻中原的数路军队,因为进抵洛阳而失去了原有的层次,整个晋军防线已经成为一字长蛇。自西而东是洛阳、荥阳、石门、滑台等若干个孤立的据点,在这些孤立的据点背后毫无纵深,如今,王镇恶等人又离开长蛇的一端洛阳西去,让这一薄弱的长蛇战线更显凶险。一旦北魏与后秦联手,北魏军队突破黄河防线,后果将不堪设想。
其次,从西进局部看,担任晋军前锋的各位将领显然是因为前期的屡次胜利和神速推进,过低地估计了对手的实力,他们以为关中之敌也会像关东之敌一样,遇到晋军要么望风溃散,要么弃城投降。殊不知,由于北魏与后秦和亲、大夏一直侵扰关中,后秦的兵力主要放在关内,晋军前期遇到的后秦军并非后秦军中的精锐部队。基于轻敌的原因,人数本来就不多的晋军前锋部队,又一再分兵,很容易被各个击败。
再次,从一字长蛇战线上看,在晋军檀道济部兵临蒲阪城下的时候,晋军沿着黄河的防线已在北魏军队的压力下,出现了松动。二月二十九日,荥阳的晋军守将傅洪献出了虎牢关,投降了北魏。北魏帝国军队随时可以突入洛阳,将王镇恶等人的军队与刘裕的大军一分为二,也可以与后秦协同,将王镇恶等人的晋军杀得片甲不留。
万幸的是,此时的北魏明元帝拓跋嗣一直在犹豫,北魏初期的名将大多都在道武帝晚年被杀,剩下的都是一些循规蹈矩之人;而后秦此时则惊魂甫定,姚泓、姚绍也失去了对战场的判断力,没有抓住战机,以优势兵力攻击黄河以南或者以北的敌人。
此时的沈林子也意识到了问题的严重性,他对檀道济建议说∶“如今,蒲阪城墙坚固,短时间无法攻破,不如离开此地,先专心进攻潼关一地。潼关天险,是地形险要之地,王镇恶一支孤军,形势非常不利。如果姚绍到此,就难办了。我们如果攻克了潼关,蒲阪的尹昭将不战而降。”檀道济采纳了沈林子的意见,改变了原有计划,主动放弃进攻蒲阪,又渡过黄河南下,于义熙十三年三月在潼关与王镇恶所部会师。
同时,后秦太宰姚绍率领后秦大军来到潼关,将王镇恶、檀道济、沈林子之军层层包围,企图一举将这支晋军消灭掉。
晋军悬军深入,粮运困难,经历了蒲阪、匈奴堡之败,又看到姚绍大军前来,晋军上下都非常恐惧。檀道济与众将商议,打算先率军渡过黄河,暂避后秦军锋芒,也有人说抛弃辎重,东逃寻找刘裕大军。在这紧要关头,沈林子手按佩剑,说道∶“相公勤王,志清六合,许、洛已平,关右将定,事情成败,在于前锋。如今,丢掉将要胜利的趋势,抛弃将要成功的基业,敌人人数很多,即使想要逃回,也是不可能的!下官受命作为前锋,立下誓言要竭尽全力,今日之事,我自能为将军办成!”沈林子说毕,命令自己麾下的数百人将营垒的水井填埋,焚烧了营舍,表示了视死如归的决心和勇气,然后他亲自率领这支由数百名壮士组成的部队,朝后秦军阵脚的西北杀去。
沈林子的区区数百之众置身于后秦五万大军之中,无异于沧海之一粟,原无关大局。然而,正是在沈林子这支敢死队的冲击下,后秦军西北阵脚稍微松动了一下,这种松动很快像瘟疫一样波及全军。就在这一瞬间,晋军全军悉数压上,后秦军整体向后退却,并最终形成了大溃败,被晋军俘虏了上千人,晋军缴获了后秦军大量的军资,取得了至关重要的一次胜利,也极大地鼓舞了全军的士气,扭转了不利的态势。
此战后,晋军占领了潼关,战败后的姚绍率军退守定城(陕西华阴东),他对众将说∶“檀道济等人悬军深入,兵力不多,在此最多不过坚壁不战,等待刘裕的大军。我派出一支部队远去阕乡(河南灵宝西北),切断他们的粮道,不出一个月,自然能够将其全歼。晋军前锋战败后,刘裕自然就无计可施了。”但胡翼度反对道∶“军势应该集中而不可以分散,如果偏师不利,军心将会大乱,岂能再战?”
姚绍的这一决策是正确的,但他判断晋军不敢主动出战,则并无根据。晋军面对后秦大军自然不会主动发起攻击,但不代表不会主动攻击分散以后的后秦军。基于上述判断,尤其是在胡翼度的反对下,姚绍打消了另外分出一支部队远去切断粮道的计划,而是命令武卫将军姚鸾率领精锐部队守住一处险要之地,以切断大路的晋军粮道,并令辅国将军胡翼度率领部队驻守东原,为椅角之势,与晋军大营距离很近。
从渑池入关,原本有两条道路,一条是从回黔阪往西,汉代以前都是从这里经过,被称为南路;第二条是大路,大路是汉末曹操讨伐关中诸将的时候,感到南路太险恶了,就在北面另外开凿了一条大路,被称作北路或者大路。由于主帅姚绍判断晋军不敢主动发动攻击,因此,姚鸾的这支奇兵并没有采取隐蔽战术远离晋军大营,而是明目张胆地卡在大路之上。
姚鸾命令尹雅率军与檀道济、司马徐琰所部在潼关以南交战,尹雅再次战败被擒,被送到刘裕那里,刘裕想到他上次被俘后又脱逃,将要诛杀他,尹雅说∶“前不久,我被你们抓获就应被处死,侥幸逃脱,今日被杀,实在是心甘情愿。不过,汉族与我们虽然不同民族,但君臣大义是一样的,晋朝以大义作为军事行动的口号,难道独独不允许我后秦国有忠于社稷的忠臣吗”刘裕听了,就又释放了他。
三月四日,沈林子率领部队衔枚夜袭后秦军固守的城池,后秦军猝不及防,姚鸾被斩杀,投降的数千后秦军全被活埋。据《晋书·姚泓载记》记载,此战被杀的后秦军共计九千余人。在东原驻守着的胡翼度部队,本与姚鸾之军相互策应,但是,在姚鸾被攻击的时候,胡翼度却未发兵援救。胡三省认为,此时的后秦军已经成为惊弓之鸟,不敢救援。其实这与晋军采取夜袭战,并迅速结束战斗有关。
当时,众将上报战功都夸大其词,虚报战果。只有沈林子据实上报,刘裕给其写信询问缘由,沈林子回答∶“王者之师,本有征无战,岂可再增加斩获人数,自我夸耀!国渊据实被赏,魏尚虚报受罚,这都是前车之鉴,后事之师。”刘裕非常赞赏。这次沈林子又全歼了姚鸾之军,捷报传来,刘裕专门给他写信道∶“你接连取得胜利,我高兴得无以言表。后秦军队既然接连遭到惨败,我猜想他们不会坚持多久了。”
一计不成,姚绍又生出一计。他又派遣抚军将军姚赞率军屯驻在黄河河中的小岛之上,以切断晋军的水路,并派遣恢武将军姚难率军从蒲阪运输军粮接济姚赞的部队。
姚难的运输队行至香城(陕西大荔东),被晋军击败。当时,后秦河北太守薛帛在河曲投降了晋军,而姚谌守尧柳(陕西蓝田南),姚和都则前往河东讨伐反叛的薛帛。当听说晋军进攻姚难的消息后,当即前去营救。后秦军抵达战场时,姚难已经战败,后秦军趁势将河曲的晋军别部击败,进屯蒲阪。再说姚赞,姚赞率领的后秦军营垒尚未构筑好,沈林子再次率军发动突击,接连将后秦军战败,姚赞骑马仓皇逃脱,返回定城。
晋军的这支先头部队在潼关附近逐渐站稳了脚跟,秦晋两军陷于相持。