于是,楚成王带领军队率先撤离宋国,以避免秦国在后面进行夹击。楚国的将领子玉对此感到不服气,并不听从楚成王的劝告,竟然狂妄地认为自己能跟晋军进行一番较量。在子玉极力劝说楚成王的情况下,楚成王才勉强派出一部分兵力去支援子玉。子玉得到兵力以后,便对晋国提出要求,让晋国重新为曹、卫复国,晋国一面在暗中许诺帮曹、卫复国,又让他们与楚国绝交,一面又把楚国的使者给扣押,这使得子玉非常愤怒。子玉果断出兵,晋文公为了避开楚军的锋芒,于是退避三舍到了城濮。在城濮展开的战争中,晋军先击溃较弱的楚右军,又诱惑楚左军进行攻击,把左军击溃。最后,子玉认为大局已定宣布撤兵,又觉得自己无脸再回楚国便在半路上自杀了。