晋文公平定周朝内乱,杀了叔带,护送周襄王归国,恢复了王位,重掌周政权。为了表示谢意,周襄王把河内土地赏赐给晋国。并任命晋文公为诸侯长,成为中原霸主,晋国在诸侯中的影响力越来越大。
晋文公四年,楚成王和诸侯包围了宋国,宋派公孙固向晋国求救。因当年晋文逃亡路过宋国时,宋襄公以诸侯之礼款待晋文公,并赠送文公很多礼物,帮助晋文公度过难关。晋国又是诸侯长,宋国有难,不出手相助说不过去。先轸说:“报答宋襄公赠马之恩稳固晋国霸业,就看我们的行动了。”
晋文公听了先轸之言,微微点头,心中已有了计划。但楚国实力不容小觑,贸然出兵,胜负难料。狐偃进言道:“楚国刚与曹国结盟,又与卫国通婚。我们若去攻打曹、卫两国,楚国必定会分兵救援,如此一来,宋国之围自解。”
晋文公眼睛一亮,觉得此计甚妙。于是,晋国开始厉兵秣马,准备讨伐曹、卫以救宋。晋文公组建了三支军队,赵衰推荐郤縠统领中军,郤臻协助他。派狐偃统领上军,狐毛协助他。栾枝统率下军,先轸辅佐他。赵衰被任命为上卿。
这年冬季十二月,晋国大军浩浩荡荡地向曹、卫两国进发。首先攻占太行山以东的地区,将原太行山以东地区,原邑封给赵衰。曹、卫两国是小国,军事实力一般,面对晋国的精锐之师,曹、卫只能坚守,不敢出战。
楚成王得知晋国派兵围困曹、卫,知道这是晋为解救宋国危机,果然如狐偃所料,楚国只好分兵去救援。而此时,晋国已暗中与齐国、秦国结盟,形成了强大的军事联盟。楚国派兵前去救援卫国,没有成功,陷入了多面受敌的困境。
晋国军队包围了曹国。曹国君共公听闻晋国大军围城,焦急万分后悔当初没有听大夫厘负羁的话,才有今日之难。他深知曹国难以抵挡晋军,便召集大臣商议对策。有大臣建议向楚国求救,可楚国此时自身也被多方牵制。
曹共公无奈之下,竟想出一险招,他命人在城墙上挂满了晋国士兵祖先的画像,以此来羞辱晋军,妄图激怒他们,让晋军自乱了阵脚。晋军士兵看到祖先画像被挂于城墙,个个义愤填膺,纷纷请战。晋文公见状,为稳定军心,下令攻城。
晋军士兵奋勇向前,曹国虽拼死抵抗,但终究不敌。最终,晋军攻破曹国都城,曹共公被俘。晋文公指责曹共公当年无理:“不帮助也就算了,怎么可以偷看人家洗澡呢?”
曹共公战战兢兢不敢说话,文公又下令:“军队不准进入大夫厘负羁宗族境内。”
算是报答当年厘负羁帮助晋文公的恩德。大夫厘负羁知道后,很是感动。
当年晋文公逃亡时,卫国君没有以礼相待,使晋文公受到了羞辱,卫国才有今日之难。卫侯请求与晋君联盟,文公没有答应。卫侯想与楚结盟,国人反对。为了讨好晋国,国人把卫侯驱逐到襄牛这个地方,由太子守卫国家。
尽管晋军围困曹、卫,楚国围困宋国仍没撤军,宋国再次向晋国求救。文公要想救援宋国就得进攻楚国,但楚国曾对文公有恩,文公不想攻打楚国。文公想放弃援救宋国,可宋国也曾对文公有恩,文公因此进退两难,举棋不定。
先轸劝谏说:“抓住曹共公,把曹、卫的土地分给宋国,楚国急于救曹、卫两国,势必会解除对宋国的包围。”
晋文公采纳了先轸的意见,楚成王果真率兵回国了。然而,楚国大将子玉却不甘心就此退兵。他对楚成王说:“大王对晋侯甚是优厚,现在文公知道楚国急于救援曹国、卫国,而故意攻打他们,这是蔑视君王,晋军如此欺人太甚,若不教训他们,楚国威严何存。”
楚成王说:“晋侯逃亡在外十九年,历尽人间艰险。受困时间久了,就能悟出许多道理,因此能正确对待百姓,百姓就拥护他。这是上天在护佑他,我们不宜与他交战。”
子玉请战说:“我不敢肯定能建功立业,只求借出战,来堵进谗言之人的嘴。”
楚成王犹豫再三,最终还是拨了部分兵力让子玉去与晋军一决高下。
子玉率领楚军气势汹汹地向晋军杀来,派使者宛春转告晋文公说:“请求恢复卫侯的地位,把土地还给曹国,我也解除对宋国的包围。”
咎犯说:“子玉无礼啊,给君王的只是解除对宋国的包围一项,而他做为臣子,却得到两项,我们不能同意。”
先轸说:“安定人心叫做礼。楚国的一句话却稳定了三个国家,你一句话却消灭了它们,我们才是无理啊!不答应楚国,就是抛弃了宋国。不如私下里同意恢复卫侯地位,归还曹国土地,来引诱子玉,然后扣押宛春来激怒楚国,看战争的情况再作打算”
晋文公把楚国使者宛春囚禁在卫国,并私下里答应恢复曹国、卫国。曹、卫两国派使者宣布与楚国绝交。楚将得臣很气愤,便率军攻打晋军,文公让晋军后退。有军官问:楚兵到来,我们应该进攻才对,为什么还要撤军呢?
文公说:“过去我在楚国时,曾与楚王立约说过,两国交战时,我会退避三舍,怎么可以违背誓约呢?”
晋军将士这才平息了怨气,主动撤退,按誓约退避三舍。待晋军退至城濮,这里地势险要,易守难攻。晋军在此严阵以待,与楚军对峙。子玉求胜心切,贸然发动进攻。
晋军则巧妙地利用地形与战术,先佯装败退,引诱楚军深入,再从两翼包抄,将楚军打得大败,楚军几乎全军覆没。子玉羞愧不已,不敢见楚成王,自杀谢罪。经此一战,晋国威望大增,晋文公的霸主地位更加稳固。而楚国经过城濮之战后,便逐渐衰败。