公元前年,楚国和郑国抓住晋国权力更替、国内局势不稳的动荡期,联合出兵攻打宋国,不但攻占了宋国的彭城,还把三年前流亡到楚国的宋国“桓之族”的鱼石等五人送了回来,让他们驻守彭城。宋国派兵围攻彭城,但是损兵折将,未建寸功,而楚国又派出军队支援彭城。宋国形势危急,右师华元亲赴新绛向晋国请求救援,晋悼公听从了上军将韩厥的建议,率兵援救宋国。
晋悼公亲自带领晋军南下,同时也派人向齐国、鲁国、卫国等盟国送信,请求他们也出兵助战。晋悼公自己带领一部分士兵暂驻台谷(今山西省晋城市西南),晋军的主力则继续行军,在彭城附近的靡角之谷与楚军打了一场遭遇战,楚军败退,撤兵回国。
第二年的正月,晋国、鲁国、宋国、卫国、曹国、莒国、邾国、滕国、薛国等九国的军队包围了彭城。小小的彭城当然抵挡不住联军的攻势,很快便开成投降。晋悼公将彭城交还给宋国,为了防止“桓之族”继续在宋国作乱,晋悼公把鱼石、向为人、鳞朱、向带和鱼府带回晋国,把他们安置在瓠丘居住,瓠丘位于现在的山西省运城市垣曲县东南。
由于齐国没有相应晋国的号召,参与援助宋国的军事行动,所以晋悼公在处理完宋国的事务之后,紧接着就命令晋军去讨伐齐国。齐国的反应也很快,立刻承认错误,二月份就派太子光到晋国去作人质。
晋悼公的下一个攻伐目标是郑国。晋悼公和卫献公一起驻扎在卫国的戚地(河南省濮阳市西北),作为后援,晋国的中军将韩厥和中军佐荀偃则带领主力部军进攻新郑,很快攻入新郑的外城,在洧水岸边击败了郑国的步兵部队。晋军没有攻打新政的内城,而是与驻扎在鄫地(河南省商丘市睢县)的诸侯联军会合,向南进发,攻入了楚国本土,入侵了焦地和夷地。《左传·僖公二十三年》曾有记载:“楚伐陈,遂取焦夷。”焦,谯县,今安徽省亳州市;夷,城父,今安徽省亳州市谯城区城父镇。焦、夷两地原来都属于陈国,后来被楚国占领。
联军在焦地和夷地劫掠一番之后,便移师向东,攻打陈国。
楚国采用袭击宋国的办法来对付中原联军的进攻。楚共王的叔叔子辛带兵入侵了宋国的吕地和留地。吕地是现在的江苏省徐州市铜山县;留地是江苏省徐州市沛县东南。郑国也配合楚军的行动,郑国的卿士子然领兵占领了宋国的犬丘。据考证,这个犬丘就是如今的河南省永城市西北。
郑国和宋国再次成为晋国和楚国争霸中原的主战场,双方你攻我伐,打得不亦乐乎。不过,这段时间的战争基本上没有给对方造成很大的伤害,大多属于骚扰性的攻击。郑国国君郑成公对楚国很忠诚,一直没有接触与楚国的同盟关系。
公元前年夏天,郑成公患了重病,看来是不久于人世了。郑国公子騑劝郑成公说:“楚国不断对中原用兵,他们每一次北上,郑国都协同作战。对于咱们来说,负担太重了。不如干脆脱离楚国同盟,加入中原联盟的行列。”
郑成公摇摇头,回答说:“几年前楚共王为了咱们郑国,在鄢陵和晋国鏖战,还被晋国人射瞎了一只眼睛。他为了我才受到这样的伤害,我怎能忘记他的功劳,背弃自己立下的誓言呢?你们这些人不要背叛楚国,让我成为一个背信弃义的小人啊!”
当年七月,郑成公去世,他的儿子髡顽继位,史称郑僖公。宋国的司城子罕主政;子驷(公子騑)担任执政大臣,主持内政,子国出任司马。晋国没有顾及“礼不伐丧”的规矩,出兵入侵郑国。当时郑国的很多大夫都主张向晋国投降,公子騑力排众议,说:“先君有命,不可以背叛楚国。如今国君刚刚去世,尸骨未寒,咱们不能违背他的遗命。”公子騑用郑成公的命令平息了众人的争议。
晋国方面见郑国不肯臣服,也很头疼。不久之后,晋国的荀罃、鲁国的仲孙蔑、宋国的华元、卫国的孙林父、以及曹国、邾国的大夫在卫国的戚地会面,共同商讨征服郑国的办法。仲孙蔑想出了一条妙计:在虎牢修筑城池,逼迫郑国屈服。
虎牢又名制地,自古就是战略要地。这个地方距离郑国国都新郑只有几十公里,晋国在这里修筑城池,直接扼住了郑国的咽喉,晋军可以以虎牢为据点,随时出击新郑。
仲孙蔑的这条计策实在毒辣,荀罃听了,立刻表示赞同:“您的办法太好了!”接着,荀罃话锋一转,说道:“去年鄫地会盟的时候,齐国的崔杼发表了很多分裂联盟的言论;今天咱们在这里会面,齐国又没派代表前来,东方的滕国、薛国、小邾国向来听从齐国的命令,它们也没有派代表前来。所以,我们的国君所担忧的,不仅仅是一个郑国啊!我准备立即动身回国,向国君禀告咱们商议的结果,请国君传告诸侯,让齐国负责修筑城池的事宜。如果齐国不接受命令,咱们就一起去讨伐齐国。您提出的这个建议不但对晋国有力,对盟国都有好处,胆敢反对者一定会成为大家的公敌。”
齐国国君齐灵公不敢与晋国联盟作对。当年冬天,诸侯们再次在戚地会面,齐国的崔杼、以及滕国、薛国、小邾国的大夫都参加了这次会晤,虎牢的城池修筑顺利开工。郑国再也坚持不下去,只得提出议和。