在晋楚脚之战以后,晋楚之间的矛盾越来越深,晋楚两国的争霸战争也愈演愈烈,在晋楚两国的争霸战争中,备受侵凌的仍然是郑、宋、许等弱小国家。公元前587年,郑国与宋国因为疆界纠纷而发生战争,后来,在楚国的干预下,许灵公和郑悼公到楚国争讼,郑国败诉,楚国逮捕了郑国大夫皇戌和子国。于是,郑国转而倒向晋国。这一年八月,郑悼公和晋国大夫赵同在垂棘(今山西潞城北)结盟,第二年秋,楚国则因为郑国倒向晋国而出兵伐郑,晋国随即出兵救郑,晋楚两国的军队在绕角(今河南鲁山东南)相遇,双方未曾交战,楚军便退回国内。在楚军撤退以后,晋军乘机侵伐楚国的盟国蔡国,在晋军攻势不止的情况下,楚国紧急调动申、息两县的兵力救蔡,抵御晋军。晋军将领赵同、赵括主张与楚军作战,但是,知庄子、范文子等人则认为,晋军与楚军作战,并不一定取得胜利,即使取胜,也仅仅是打败楚国的两个县,一旦被楚国打败,晋国的耻辱就大了,于是,晋军也退了回去。
绕角之战,晋国和楚国的军队两度相遇而没有交战,表明双方都没有必胜的把握和信心,而且在事实上,晋楚两国中的任何一方都没有压倒对方的绝对优势。公元前584年,楚国又出兵伐郑,被郑国打败,楚国的郧公钟仪被郑国俘获后献给晋国。为了牵制楚国的力量,公元前583年秋,晋国派大夫公孙巫臣到吴国去,教吴国人乘车、射御、战阵之法。晋国这样做的目的,就是为了使吴国强大起来,在背后袭击楚国,从而减轻楚国对晋国的压力。第二年,楚国也用重礼贿买郑国,使郑国成为楚国的与国,而晋国也立即出兵侵郑。
频繁地对外用兵,使晋楚两国都感到力不从心。于是,两国都产生了谋求和平的愿望。公元前582年,晋国把楚国的战俘钟仪放回了楚国,试图通过钟仪使楚国与晋国结盟,实现晋楚之间的和平。这年十二月,楚国派公子辰出使晋国,请求与晋国结成友好关系,以后,晋国也派使者到楚国回访。从此,晋楚之间有了和解的行动。
这时,宋国的大夫华元与楚国的令尹子重友好,又和晋国的执政大夫栾武子相善,当他听到楚国已经答应了晋国使者的求和请求的时候,便于公元前580年冬先后出使楚国和晋国,以促成晋楚两国之间的和解。在华元的调解下,晋楚两国于公元前579年夏,在宋国的西门之外结盟,盟约说:“晋楚两国相互之间不以兵戎相见,好恶同之,一起周济灾害危难,救援饥荒祸患,如有危害楚国的,晋国就讨伐它,对于晋国,楚国也是一样。两国之间聘使往来,道路不要阻塞,在有矛盾的时候相互协商,讨伐背叛和不来朝见的国家。”宋西门之盟,开了春秋时期晋楚两国弭兵会盟的先声。实际上,在晋楚两国之间实现和平,不仅是晋楚两国的需要,而且也符合中原地区一些弱小国家的愿望。所以,为了实现晋楚之间的和解,宋国的大夫华元奔走于晋楚之间,终于使晋楚两国实现了初步的和平。
晋楚两国之间虽然签订了盟约,但是,晋楚两国在这时并没有真正实现和解的诚意。就在宋西门之盟的二年以后,楚国又兴兵北上,侵伐郑国,攻到了暴隧(今湖南原阳县西),然后,又继续侵犯卫国,到达了首止(今河南睢县东南)。由于楚国再次北侵,晋国也势必在军事上做出反应。公元前575年,由于郑国又成为楚国的盟国,晋侯准备讨伐郑国。在行将出兵的时候,晋国的大夫范文子说:“如果诸侯都背叛晋国,晋国就可以得志,但是如果只有郑国背叛晋国,晋国的忧患立即就要到来了。”范文子所以这样说,主要是因为当时晋国国内已经出现了大夫专权、众卿之间不睦的现象,当晋国面临着严重的外患的时候,晋国还可以获得暂时安宁,一旦晋国的外患止息,晋国的内部矛盾就将暴露无遗。但是,晋国的执政栾武子却坚决主张出兵,他说:“不能在我执政的时候而使晋国失去了诸侯,一定要伐郑。”于是,晋国在内忧将作的情况下出兵伐郑。
晋国军队出发以后,郑国便派人到楚国报信,楚共王即带兵救郑。当楚军路过申县的时候,司马子反到申叔时家里询问此次出兵将有什么结果时,申叔时说:“现在楚国内弃其民,而外绝其好,背弃盟约而自食其言,在不合适的时候出兵作战,使人民劳苦而求得国家的利益,人民不知道什么是信义,这样,在战场上无论是进还是退都是罪过。人们都关心自己的后路,谁还能出力死战?你自己好自为之,我将不能再看到你了。”实际上,这时楚国也是困难重重,一方面,由于楚国连年征战,人民的经济负担过重,统治者已经失去了民众的支持,另一方面,楚国在外交上也因轻易地背弃与晋国、齐国等国的盟约而不得人心。在出兵的时候,又失于详细的谋划,所以,申叔时断定楚军必败也是有道理的。
当郑国的使者预先回到郑国报信的时候,也对郑国的大夫子驷说:“楚国的军队行动快速,在路过险要地方的时候队伍不整齐,行动过快就将思虑不周,队伍不整就会丧失行列,思虑不周,队伍不整,将凭什么作战呢?楚国恐怕是难以依靠了。”
五月的时候,晋国的军队渡过了黄河。由于听说楚军将要到来,范文子就提议退回去,他认为回避与楚军作战,有利于缓解晋国的忧患。在这个时候,会合诸侯并不重要,重要的是使晋国不至于灭亡。但是,栾书仍然不肯听从他的意见。六月,晋楚两军在鄢陵(今河南鄢陵北)相遇,这时,晋国的范文子仍然不想与楚军交战,大夫郤至说:“韩原之战,惠公没有回来,箕地之战,先轸不能回国复命,邲之战,荀伯不能重整军队再与楚军作战。这都是晋国的耻辱。现在我们再回避楚军,又会增加晋国的耻辱了。”范文子又申辩说:“从前,秦、狄、齐、楚都很强大,那时,不尽自己的力量与外敌作战,我们的子孙将会削弱。现在,三个强敌已经屈服,强大的敌人只有楚国而已。只有圣人才能既没有内忧也没有外患,我们不是圣人,没有外患就必然有内忧,为什么不放过了楚国,让他使我们警戒呢?”但是,当时晋军将领中,主战派占多数,范文子的意见很快就被否决了。
在甲午日那一天,楚军逼近晋军的营垒,列成阵势,按照当时人们的习惯,甲午日是农历月终,即晦日,不宜动兵。晋国的大夫郤至分析楚军的情况说:“现在楚军有六个致命的弱点,他们的两个执政卿不和睦,楚王的亲兵由旧家子弟充任,郑国的军队不整齐,蛮族的军队又不能列成阵势,排列阵势的时候又不避忌日,士兵在阵中喧闹不止,各军彼此观望没有战心,旧家子弟又不一定精良,在晦日列阵又犯了上天的大忌,我们一定能够胜利。”楚国的一个降臣苗贲皇向晋厉公建议道:楚军的精锐是中军的王族,应该把晋军的精兵分为两部,攻击楚军的左军和右军,然后把三军集中起来攻击楚军的王卒。晋厉公又让卜人占筮,结果为吉,于是,晋军列开阵势与楚军交战。