晉文公平定周朝內亂,殺了叔帶,護送周襄王歸國,恢複了王位,重掌周政權。為了表示謝意,周襄王把河內土地賞賜給晉國。並任命晉文公為諸侯長,成為中原霸主,晉國在諸侯中的影響力越來越大。
晉文公四年,楚成王和諸侯包圍了宋國,宋派公孫固向晉國求救。因當年晉文逃亡路過宋國時,宋襄公以諸侯之禮款待晉文公,並贈送文公很多禮物,幫助晉文公度過難關。晉國又是諸侯長,宋國有難,不出手相助說不過去。先軫說:“報答宋襄公贈馬之恩穩固晉國霸業,就看我們的行動了。”
晉文公聽了先軫之言,微微點頭,心中已有了計劃。但楚國實力不容小覷,貿然出兵,勝負難料。狐偃進言道:“楚國剛與曹國結盟,又與衛國通婚。我們若去攻打曹、衛兩國,楚國必定會分兵救援,如此一來,宋國之圍自解。”
晉文公眼睛一亮,覺得此計甚妙。於是,晉國開始厲兵秣馬,準備討伐曹、衛以救宋。晉文公組建了三支軍隊,趙衰推薦郤縠統領中軍,郤臻協助他。派狐偃統領上軍,狐毛協助他。欒枝統率下軍,先軫輔佐他。趙衰被任命為上卿。
這年冬季十二月,晉國大軍浩浩蕩蕩地向曹、衛兩國進發。首先攻占太行山以東的地區,將原太行山以東地區,原邑封給趙衰。曹、衛兩國是小國,軍事實力一般,麵對晉國的精銳之師,曹、衛隻能堅守,不敢出戰。
楚成王得知晉國派兵圍困曹、衛,知道這是晉為解救宋國危機,果然如狐偃所料,楚國隻好分兵去救援。而此時,晉國已暗中與齊國、秦國結盟,形成了強大的軍事聯盟。楚國派兵前去救援衛國,沒有成功,陷入了多麵受敵的困境。
晉國軍隊包圍了曹國。曹國君共公聽聞晉國大軍圍城,焦急萬分後悔當初沒有聽大夫厘負羈的話,才有今日之難。他深知曹國難以抵擋晉軍,便召集大臣商議對策。有大臣建議向楚國求救,可楚國此時自身也被多方牽製。
曹共公無奈之下,竟想出一險招,他命人在城牆上掛滿了晉國士兵祖先的畫像,以此來羞辱晉軍,妄圖激怒他們,讓晉軍自亂了陣腳。晉軍士兵看到祖先畫像被掛於城牆,個個義憤填膺,紛紛請戰。晉文公見狀,為穩定軍心,下令攻城。
晉軍士兵奮勇向前,曹國雖拚死抵抗,但終究不敵。最終,晉軍攻破曹國都城,曹共公被俘。晉文公指責曹共公當年無理:“不幫助也就算了,怎麼可以偷看人家洗澡呢?”
曹共公戰戰兢兢不敢說話,文公又下令:“軍隊不準進入大夫厘負羈宗族境內。”
算是報答當年厘負羈幫助晉文公的恩德。大夫厘負羈知道後,很是感動。
當年晉文公逃亡時,衛國君沒有以禮相待,使晉文公受到了羞辱,衛國才有今日之難。衛侯請求與晉君聯盟,文公沒有答應。衛侯想與楚結盟,國人反對。為了討好晉國,國人把衛侯驅逐到襄牛這個地方,由太子守衛國家。
儘管晉軍圍困曹、衛,楚國圍困宋國仍沒撤軍,宋國再次向晉國求救。文公要想救援宋國就得進攻楚國,但楚國曾對文公有恩,文公不想攻打楚國。文公想放棄援救宋國,可宋國也曾對文公有恩,文公因此進退兩難,舉棋不定。
先軫勸諫說:“抓住曹共公,把曹、衛的土地分給宋國,楚國急於救曹、衛兩國,勢必會解除對宋國的包圍。”
晉文公采納了先軫的意見,楚成王果真率兵回國了。然而,楚國大將子玉卻不甘心就此退兵。他對楚成王說:“大王對晉侯甚是優厚,現在文公知道楚國急於救援曹國、衛國,而故意攻打他們,這是蔑視君王,晉軍如此欺人太甚,若不教訓他們,楚國威嚴何存。”
楚成王說:“晉侯逃亡在外十九年,曆儘人間艱險。受困時間久了,就能悟出許多道理,因此能正確對待百姓,百姓就擁護他。這是上天在護佑他,我們不宜與他交戰。”
子玉請戰說:“我不敢肯定能建功立業,隻求借出戰,來堵進讒言之人的嘴。”
楚成王猶豫再三,最終還是撥了部分兵力讓子玉去與晉軍一決高下。
子玉率領楚軍氣勢洶洶地向晉軍殺來,派使者宛春轉告晉文公說:“請求恢複衛侯的地位,把土地還給曹國,我也解除對宋國的包圍。”
咎犯說:“子玉無禮啊,給君王的隻是解除對宋國的包圍一項,而他做為臣子,卻得到兩項,我們不能同意。”
先軫說:“安定人心叫做禮。楚國的一句話卻穩定了三個國家,你一句話卻消滅了它們,我們才是無理啊!不答應楚國,就是拋棄了宋國。不如私下裡同意恢複衛侯地位,歸還曹國土地,來引誘子玉,然後扣押宛春來激怒楚國,看戰爭的情況再作打算”
晉文公把楚國使者宛春囚禁在衛國,並私下裡答應恢複曹國、衛國。曹、衛兩國派使者宣布與楚國絕交。楚將得臣很氣憤,便率軍攻打晉軍,文公讓晉軍後退。有軍官問:楚兵到來,我們應該進攻才對,為什麼還要撤軍呢?
文公說:“過去我在楚國時,曾與楚王立約說過,兩國交戰時,我會退避三舍,怎麼可以違背誓約呢?”
晉軍將士這才平息了怨氣,主動撤退,按誓約退避三舍。待晉軍退至城濮,這裡地勢險要,易守難攻。晉軍在此嚴陣以待,與楚軍對峙。子玉求勝心切,貿然發動進攻。
晉軍則巧妙地利用地形與戰術,先佯裝敗退,引誘楚軍深入,再從兩翼包抄,將楚軍打得大敗,楚軍幾乎全軍覆沒。子玉羞愧不已,不敢見楚成王,自殺謝罪。經此一戰,晉國威望大增,晉文公的霸主地位更加穩固。而楚國經過城濮之戰後,便逐漸衰敗。