第二东方泛白之时,两军便开始列阵待战了。
城濮一带地形复杂多变,既有可以进行大规模的车战、步战的平原,也有植被茂盛的、可以埋伏奇兵的丘陵和高低不平的台地沟壑。
楚军方面,成得臣以西广、东宫卫队和若敖氏六百人为中军,斗宜申率左军,斗勃率右军,陈、蔡两国军队同归斗勃指挥。晋国方面的三军则完全打乱了部署,晋文公没有亲自参加战斗,而是徒附近的山顶上“凭栏观看”。
子玉叫道:“听我的命令!今日之后就不会再有晋国了!”他命右军首先发动进攻。右军虽然人数最多,战斗力却最弱。陈、蔡两军的加入,解决了很多没有他们参战时不会出现的麻烦。右军出击的目的只是试探敌饶战斗力,并把晋下军引出来。
楚饶想法是:一旦晋下军攻势过猛,右军就立即主动撤退,然后中军就会出击,与右军夹击敌人。这是一个相当大胆的策略,子玉敢于冒这个险,是因为他料定晋中军担负着保卫晋文公的重任,必然不敢轻易出动,那么楚军就会抓住时机击溃下军。下军一旦溃败,楚三军压上,晋国必败无疑。
但是晋军的战法从开始到结束都不是楚国人想象的那样。首先,晋文公没有出战,他带着卫队徒军营后方的高地上。其次,晋国中军的一半和下军的一半被调到右翼,用来加强上军的力量。这样一来中军就只剩下一半的兵力,下军也是不完整的。但是晋军在调动时很好地掩饰了自己的动作,楚国对此毫不知情。最后,晋人把齐师调到左翼,把秦师调到右翼这个行动却是公开进行的。
楚右军推进到离晋下军不远的地方时,胥臣的半个下军和齐师出击了。胥臣这些一直在搜集虎皮,当他感觉虎皮数量还是太少时,就在一些布匹上绘制虎皮的条纹并做了一些假虎头。临战时,他把虎皮蒙在最前排战车的马背上,把虎头固定在马头上。
晋国的战马已经训练得不怕虎皮了,但是敌饶战马看见一排恶虎驾着战车飞奔而来,顿时惊骇不已,不停地“恢恢”惊叫,或者盘旋打转,或者掉头冲向自己的步兵方阵。
楚右军马上乱成一团:步兵看到敌人时,双方的距离还很远,但是顷刻间前面的车兵步兵没想到战马出了问题就像见到鬼一样掉头,驾车向自己的阵列冲过来了。一些战车冲进来撞死撞伤很多人,直到车轮为尸体所阻才停下来。
晋军顿时群情振奋,高声呐喊冲进楚军。斗勃的战车已经撞散了架,军旗倒了,军鼓也被踩碎了斗勃在人群中被涌来涌去,他发的命令根本传不出去。
军官找不到主帅,士兵找不到长官,也找不到自己的旗帜到处都是呼喊声,士兵们挤在一起,什么也听不清,什么也看不见。混乱不堪的右军再也无法组织起有效防御,就这样溃败了。
斗宜申的左军也出击了,这是一支注定要全军覆没的军队,因为他们即将面对的是晋国的两个军再加上秦师。右军虽然败得很窝囊,但是绝大部分军士都能得以生还,而左军除少数人外都被杀或者被俘了。
当左军向前挺进的时候,他们发现敌人似乎躁动不安。双方接触了片刻,敌人就发生了混乱,继而争先恐后地逃走了。子西登高一望,看到狐毛载着军旗夺路而逃,而且在更远处烟尘蔽日,似乎有大批的敌军正在逃跑实际上只是栾枝和车兵们在战车后挂上树枝飞驰狂奔造成的假象。
子西被眼前的假象所蒙蔽,他以为胜利就在眼前了,激动地下达了全速追击的命令。于是左军本来严密的阵型马上松散开了,他们追上并杀死很多掉队的敌人,又割下尸体的右耳这些耳朵可以让他们得到丰厚的赏赐啊!士兵们在战功和赏赐的驱使下不停追击,跑得上气不接下气,一些士兵甚至把头盔也扔掉了。
这时眼前矗立着一座植被茂密的丘陵,晋军是沿丘陵两侧逃跑的,因此楚军就分开两队沿两侧追击。但是楚军刚刚通过一半时,山上突然杀下一支伏兵,这支军队就是晋国的精锐部队由先轸率领的中军公卒!
中军以强大的冲击力将敌人截成几段,而在丘陵北面静待敌军的,则是由狐偃率领的半支上军。跑在最前面的楚军刚刚绕过丘陵便遭到狐偃的进攻,狐毛此时也停止“逃跑”,转身与狐偃合兵一处反攻子西。
子西看到对方主将的大旗,才知道自己的对手有多么强大,楚人以疲惫之师对两倍于自己的敌人作战,战败也只是时间的问题了。但是子西在危机关头仍然十分镇定,他果断地下令向西退却,因为不远处还有一些绵延的丘陵,军队可以占据那里的有利位置进行防守。
左军暂时获得安全后,子西开始分析晋军的战术。他思索片刻,突然大喊道:“晋国的所有军队都出动了,中军是座空营啊!晋侯一定就在不远处,抓住他就可以结束战事了!”他立即命令随行的山戎骑兵趁晋军没有完成合围之际冲出去,将情报传递给子玉。
此时,子玉已经收到了右军战败的消息,而左军传来的最后消息则是子西正在放手追击敌人。子玉敏锐地感觉到这其中必定有个极大的阴谋,而子西正向着敌人设计的圈套一步步迈进去。
子玉马上派出联络官,要求子西马上撤退,同时他命令中军列成防御阵型缓缓向前,以接纳战败的右军。不久右军的残兵败将就逃回来了,他们狼狈不堪,筋疲力尽,沿着楔形的的侧面蹒跚而行,很多人摔倒在地几乎爬不起来。中军的士兵尽管十分愤怒而且同情他们的战友,但是现在只能保持阵型而不能出来帮助那些人。
晋军方面的姜戎骑兵首先赶到了,他们显然已经追击得昏了头,无视楚国重兵在前,也顺着阵列侧面追下来。骑兵马上遭到了楚军的无情射杀和刺杀,他们认清形势后就狼狈地四散奔逃。中军仍然在缓缓前进,逃回来的同伴越来越多,而敌饶大批军队也赶到了,于是中军就停下来愤怒地注视着敌人。
胥臣下令停止进攻,晋军重新集结起来和楚军遥遥相对,双方都没进攻的意思,之后楚军就开始有序地撤退了。胥臣派出一些轻骑掠阵,这给双方都造成一些损失,楚军徒山脚下,晋军仍然停在原地,不进也不退。