齐国失去霸主地位,骊姬倾晋之后晋国也陷入乱局,而此时南方的楚国在楚成王的治下却国力日盛、蒸蒸日上。中原的小国郑、许、陈、蔡、鲁、卫、曹、宋大都依附于楚,或者在楚国与晋国之间摇摆不定,楚国颇有称霸之势。

晋文公即位以后,晋国局势稳定,经济得以发展,民生得以休息,同时晋文公也在王子带之乱中带兵勤王、安定王室,又积极与秦、齐加强联系,晋国的大国威势逐渐恢复,也有争霸中原之心。在这种情况下,晋国与楚国之间就不得不出现当初重耳在楚国所预言的“晋、楚治兵,遇于中原”之境况了。

自从宋襄公图霸失败,惨败于楚国之手,宋国就只能依附于楚国。但是宋襄公的儿子宋成公与楚人有杀父之仇,而且宋襄公当年曾经对流亡中的晋文公极尽礼遇,因此晋国国力恢复之后,宋成公便决定背叛楚国,转而投靠有故交的晋国。此时晋楚两国正针锋相对,楚国自然不能容忍宋国这样公然的背叛行为,于是便联合了郑、许、陈、蔡等国一同进攻宋国,并包围了宋国的都城,宋成公派出公孙固来向晋国告急求援。

接到救援,晋文公召集群臣商议对策,晋国的大夫先轸说:“报答宋国以前的恩惠,建立晋国如今的威信,奠定今后的霸业,就在此一举了!”狐偃则进一步出谋划策:“楚国最近刚刚与曹国结盟,又与卫国结成姻亲,我们要救援宋国,不必与强大的楚军正面对抗。可以先去攻打曹国和卫国两个小国,楚国必定会放弃围攻宋国而去援救曹国、卫国。”

当初重耳在流亡中经过曹国,曹共公曾经无礼地去偷看他洗澡,重耳一直深以为辱,对曹共公耿耿于怀,如今就顺水推舟地同意了攻打曹国。为了筹备这场战争,晋国将原来的二军扩充为三军,又选定了元帅,晋文公在被庐大阅三军之后带领大军出发了。

经过一番波折,还在路上攻克了卫国,晋军终于围困住了曹国的国都,但是曹国国都城坚池深,一时难以攻克,晋军士兵死伤无数。曹国人为了打击晋军士气,便将晋军士兵的尸体挂在城墙上示众,看到攻城的同袍死后都不得安宁,晋军之中果然人心惶惶,晋文公深以为患。有人建议说:“他们这样对待我们的士兵,我们驻扎在他们的祖坟旁边祸害他们的祖坟。”

于是晋文公就将大军迁到了曹国人祖坟附近,曹国人见了果然人人惊惧,民心不稳,只好将战死的晋军尸体用棺木收殓了送还晋军。晋文公命令军队趁着曹国人心大乱之际进攻,果然攻克了曹国的都城。

晋军虽然攻克了曹国,但是楚国却没有按照预测的那样撤回围攻宋国的军队回来救援曹国,反而攻击得更加猛烈了。宋国抵挡不住,再次派人相晋国告急。晋文公对元帅先轸说:“宋人又来告急,如果不去救援,宋国就会与我们绝交,完全依附楚国;与楚国调节和谈,楚国又不答应;可是若要与楚国作战,齐国、秦国又不会支持我们,这如何是好?”

先轸说:“不如让宋国使者送礼给齐国、秦国,请他们代为调解周旋。我们抓住曹国的国君,再将曹国、卫国的土地分给宋国,楚国与曹国、卫国是盟友,必定不会答应和解,到时候齐国、秦国收了宋国的礼物又被楚人的不给面子所激怒,能不与楚国开战吗?”晋文公觉得有理,便依计行事。

晋国联合了齐国和秦国,占了优势地位,看到形势越来越严峻,楚成王有意退兵,便派人告诉在前线领军的令尹子玉。但是子玉骄傲自负,因为曾经有人批评他无带兵之能,最多只可统帅三百乘战车,他便不肯听命撤军,只派人去向楚成王请战说:“我不为立下战功,只为了用事实堵住小人之口。”楚成王见子玉不听命令,十分气愤,只给了子玉少量的军队和一百八十乘战车。