那时候,鲁、卫都是楚的同盟国。为了讨好楚国,鲁国在卫人赶走卫成公以后,就派大夫公子买带兵到卫国去驻防。同时,楚国也调动部分兵力,前去救卫,结果失败了。鲁国看到晋国这样强大,连楚国都敌不过它,就害怕起来,杀了公子买来讨好晋国。
晋军攻下卫国不久,又包围了曹国的国都。曹人猛烈抵抗,晋军死伤很多。曹人把晋兵的尸体陈列在城上,打击晋军的士气。这件事,使晋公文很伤脑筋。就在这紧急关头,一些士兵向晋文公献计说:“我们把军队驻扎到曹人的墓地上去(暗示要掘曹人祖先的坟墓),曹人一定很恐惧。我们就乘他们慌乱的时候去攻城。”晋文公采纳了这个建议,叫兵士们立刻驻扎到墓地上去,并且扬言要挖掘曹人的坟墓。这一计策果然有效。城上的曹人看见这种情景,又纷乱,又害怕。为了使晋军不挖掘坟墓,他们赶快把晋军的尸体用棺木装好,送出城去。晋军抓住这个机会,加紧进攻。三月初八那天,晋军攻入曹国国都,活捉了曹共公。
晋军进入曹国都城以后,晋文公列举罪状,当众责骂曹共公,说他不该不信任曹国的贤臣僖负羁,不该滥封官爵,像曹这样的小国,竟让三百名品德不好的人做大官,乘坐高车大马。晋文公过去在国外流亡的时候,曾经到过曹国。曹共公对他很不礼貌,只有僖负羁曾经暗地里送饭菜招待过他。为了报答僖负羁的恩惠,并且表示自己对贤人的尊敬,晋文公命令晋军不要进入僖负羁的住宅,保护他的家族的安全。不过,晋文公手下的人并不都理解他的这些做法。部将魏和颠颉两人听到这个命令,就气愤地说:“我们跟从主公到处流亡,吃尽千辛万苦,主公从来没有考虑到我们的功劳,却偏偏要去报答僖负羁送饭这点小恩小惠。这有什么可以报答的呢!”他们两人就放火烧了僖负羁的住宅,僖负羁也被烧死了。为了严肃军纪,晋文公杀了颠颉。至于魏,由于晋文公喜爱他作战英勇,只革掉了他的官职,没有处死刑。晋文公在曹国的这些措施,得到了曹人的支持,提高了晋国的威信。
退避三舍
晋军伐卫攻曹,原是想以此来解宋国之围,没料到攻下曹、卫两国以后,楚国还是围住宋都不放。宋成公第二次派人向晋文公求救。晋文公感到很为难。他对大臣们说:“宋国来求救,要是不去援救,宋国就会同我们断绝关系。同楚国商量,叫楚军自动从宋国撤退,楚国又不答应。我想同楚国打一仗,但是齐、秦又不肯同我们合作。这怎么办呢?”还是先轸有办法。他对晋文公说:“叫宋国不必向我们讨救,而用财货去贿赂齐、秦两国,请齐、秦出面调解,要楚国退兵。我们把曹国国君扣留起来,并且把曹、卫的土地分一些给宋国。楚国同曹、卫很要好,这样一来,它一定不会接受齐、秦的调解,同宋国讲和。齐、秦接受了宋国的贿赂,却起不到调解的作用,就会对楚国不满。这样,它们怎能不同我们一起并肩作战呢!”晋文公十分赞许这个计谋,立刻扣留曹共公,把曹、卫的一部分土地分给了宋国。
晋国同齐、秦建立联盟,这对楚国说来,自然是很不利的。楚成王也看清在这种极为不利的形势下,同晋国交战是讨不到什么便宜的,于是就下令叫申叔撤离毂地,叫子玉撤离宋国。他说:“我们不能同晋国军队打仗。晋侯出奔在外十九年,后来终于回国即位。他什么危险、困难都经历过,经验很丰富,要战胜他是很困难的。”
但是,正在前线指挥楚军攻宋的子玉并不服从楚成王的命令,他坚持要同晋国一战。他派大夫伯棼去见楚成王,要求楚成王增加军队,并且下达出战的命令。子玉为什么坚持要同晋国交战呢?其中有这样一个原因:
楚国围宋的前夕,楚成王叫已经卸职的令尹子文在一个名叫睽的地方训练军队。从天明到中午,子文没有惩罚一个人。接着,现任令尹子玉又在一个名叫睽的地方训练军队。到天黑收操的时候,他鞭打了七个人,用小箭穿了三个人的耳朵。国内年老有资望的人,都认为子玉有才能。子玉做楚国的令尹,是因为他伐陈有功,由子文推荐的。因此,这些老年人又都去向子文祝贺,贺他推荐了有才能的人。但是年幼的贾,却很晚才去。去了,也不向子文祝贺。子文问他为什么不贺,他说:“我不知道你有什么可贺的。你推荐子玉代自己做令尹,据你说是为了安定国家。但是子玉没有大才能,如果再叫他对外作战,一定要失败。试问,这有多少好处呢?你推荐一个使国家打败仗的人,又有什么可贺的呢?子玉这个人倔强而没有礼貌,不能治理百姓,如果叫他带领超过三百乘车的兵士去作战,怕就不能胜利回国了。如果他果真打了胜仗,那么等他打了胜仗回国,再祝贺也不算迟。”子玉听了贾对自己的这番评论,很不满意。他认为这次对晋国的战争正是表现自己,提高自己威信的好机会。因此,他坚决主战。他要伯棼向楚成王转达他的话说:“我不敢说一定有把握打胜仗,只想用事实来杜塞那些说我不会用兵的人的毁谤。”
子玉不服从命令,楚成王很不高兴。但是,楚成王也不甘心让晋国独个儿称霸,阻碍自己的北进。所以,当时他没有坚决制止子玉,并且还给了子玉一些人,作为补充力量,希望侥幸得胜。宋国军民凭城坚守,楚军攻了好久攻不进去。子玉只好派大夫宛春去同晋军谈判,退兵的条件是:晋国恢复卫成公的君位;恢复曹国的领土。