楚成王见晋军破曹降卫,与齐、秦结成了联盟,中原形势已变,就退回申邑(在河南南阳市),命令大夫申叔撤出攻占齐国的谷邑,命令令尹子玉撤回围宋的军队,并告诫子玉说:"无从晋师!晋侯在外,十九年矣,而果得晋国,险阻艰难,备尝之矣。民之情伪,尽知之矣。"又说:"《军志》曰:'允当则归'。又曰:'知难而退'。又曰:'有德不可敌'。"但楚令尹子玉一向骄傲,不听楚成王劝告,指派伯棼赴申邑向楚成王请求出战,要求增援。楚成王首鼠两端,既不愿与晋交战,却又向子玉增派援军东广、西广与若敖氏之六卒。
子玉得到楚成王的增援,更加狂傲。他派宛春赴晋军说:"请复卫侯而封曹,臣亦释宋之围。"子玉虽然狂傲,但身为楚国令尹,也并非无谋之辈,他的这个计划就是一石三鸟之策。如果晋答应他的要求,则曹、卫、宋三国都会感戴楚国。如果晋不答应他的要求,那么曹、卫、宋三国将会怨恨晋国。晋大夫子犯即上了子玉的圈套,说:"子玉无礼哉!君取一,臣取二,不可失矣,"主张拒绝子玉的建议。但晋中军帅先轸则识破了子玉的机关,说:"子与之!定人之谓礼。楚一言而定三国,我一言而亡之。我则无礼,何以战乎?"于是,晋国私下答应恢复曹、卫,让他们断绝与楚国的关系,而扣留楚使宛春以激怒子玉。这是晋国走出的第三着高棋。一向狂傲自大的子玉不能忍受这种刺激,冒然率军北上攻击晋军,终于被晋军牵上了鼻子。
当初,晋文公以公子身份颠沛流离时,曾路过楚国,受到楚成王的款待。酒席宴上,成王问文公:"公子若反晋国,则何以报不谷?"文公回答道:"若以君之灵,得反晋国。晋楚治兵,遇于中原,其辟君三舍(三十里一舍)。"这次,文公果然实践诺言,面对楚军的进攻,命令自曹国后撤三舍,与宋、齐、秦三国军队一同驻扎在城濮(山东省范县南)。子玉率军急进,依托丘陵险阻扎营,两军对峙于城濮。晋文公退避三舍,表面上是报答以前楚成王给予的礼遇,实际上是运用"卑而骄之"、"怒而挠之"的诱敌之计,子玉再次上钩。
楚子玉派大将斗勃向晋文公请战说:"请与君之士戏,君凭轼而观之,得臣(子玉名)与寓目焉,"表现出一派骄横之气。晋栾枝答词却相当谦恭:"寡君闻命矣。楚君之惠,未之敢忘,是以在此。为大夫退,其敢当君乎?既不获命,敢烦大夫谓二三子:戒尔车乘,敬尔君事,诘朝相见。"①城濮交战时双方的阵容是:晋三军,即先轸为元帅,统率中军,