并强调“成师以出,闻敌强而退,非丈夫也”。在这种好战心理的驱使下,郤穀遂不顾荀林父的军令,擅自率其部属渡河南进。他这种行为严重干扰了晋军统帅中枢的有效指挥。
郤穀擅自渡河的事件发生后,晋下军大夫即认为这么做必败无疑。这时司马韩厥就向荀林父建议道:“郤穀以偏师攻敌,势必招致危险,您还不如命令全军渡河前进,这样,即使是打了败仗,责任也是由大家共同承担”。荀林父犹豫不决,最后被迫令全军南渡黄河,行至邲地(今河南衡雍西南),由西而东背靠黄河列阵。
楚军闻知晋军渡河,内部也出现了战与不战的分歧,令尹孙叔敖主张见好就收,及时撤兵,不与晋军作正面冲突;而宠臣伍参则在分析了晋军内部将帅不和、士气低落等弱点后向楚庄王建议同晋开战。楚庄王采纳了伍参的意见,打消南撤念头,转而率兵向北推进,抵达管地(今河南省郑州市一带)。
就在大战一触即发的前夕,郑襄公派遣使臣皇戍前往晋营,以“楚师骤胜而骄,其师老矣,而不设备”为由,劝说荀林父进攻楚军,并答应郑军协同晋军作战。对郑国的这一劝战建议,晋军将帅中又发生了一场辩论。郤穀力主答应郑使的要求,赞成立即出战,认为“败楚、服郑,在于此矣”。
下军副将栾书则不同意郤穀的意见,认为楚军实际情况并非“骄”“老”和“不备”。郑国来劝战,纯粹是出于对自身利益的考虑,希望晋、楚速战速决,以战争结局来决定郑国的去从。中军元帅荀林父一时犹豫于两派的意见之间,迟迟未能作出决断。
正在晋军进退不决之时,楚庄王遣使求见晋军主帅,表示楚这番出师北上,目的只是为了教训一下郑国,而并无开罪晋国的意思。晋上军将士会代表荀林父答复说,晋、郑同受命辅佐周王室,如今郑怀有二心,晋特奉王命质问郑国,而与楚国无涉。回答得比较客气。郤穀对此大为不满,认为荀林父谄媚楚国,便派中军大夫赵括用挑衅性的语言答复楚使:
晋国出兵是为了把楚军从郑国赶走,“必逐楚军”,为此,不惜同楚军交锋,“不避战”。这样一来,晋军内部的混乱分歧,便直接暴露在楚使跟前,楚庄王从而掌握了晋军的意向和虚实。
为了进一步麻痹晋军,确保决战的胜利,楚庄王再次派人以卑屈的言辞向晋军求和。荀林父原先并无决战的决心,见楚军求和,即予以答应,并放松了戒备。这时,楚军就乘机派遣乐伯、许伯、摄叔等人乘战车向晋军挑战。既打击了晋军的士气,又摸清了晋军的虚实。
楚军挑战后,晋军中两个心怀不满,希望晋军失利的将佐魏锜和赵旃,也先后要求前去向楚军挑战,未被允许,改为出使请和。赵、魏两人进至楚营后,擅自向楚军挑战进攻,结果恰好为楚军所利用,楚大军遂倾巢而出,猛烈攻打晋军各部,给前来挑战的晋军魏锜、赵旃、荀莹部以沉重的打击。并乘胜进逼晋军大营。
这时,荀林父还在营中等待楚军派使者前来议和。楚军突然如潮而至,使得其手足无措,计无所出,竟然在惊恐中发出全军渡河北撤的命令,并大呼先渡河者有赏。这样一来,晋军更是陷于一片混乱,大败溃逃,拥挤于黄河河岸附近,争相渡河逃命,船少人多,渡河没有指挥。先上船的怕楚军追及,急于开船,未上船的跳入河中,手攀船舷,以至船只不能开动。结果引起一阵自相砍杀,造成船上断臂断指积成一堆,使晋军蒙受重大的损失。
所幸的是,楚军并无压迫晋军于河岸聚歼的计划,晋军大部才得以渡河逃脱战场。另外,晋上军在士会指挥下,预作准备,设伏挫败楚公子婴齐率领的楚左军进攻,有秩不紊地向黄河北岸撤退;又晋下军大夫荀首为营救其子荀莹而奇袭楚先头部队成功,射死楚将连尹襄老,活捉公子谷臣。所有这些,也都起到了掩护晋军渡河的客观作用,减少了晋军的伤亡。