晉獻公晚年寵愛驪姬,驪姬為了立自己的兒子奚齊作太子,逼死了原來的太子申生。晉獻公的另外兩個兒子夷吾和重耳被迫遠走他國。當重耳到楚國時,楚成王預見他有可能回國做國君,就非常熱情地接待他。
在一次宴會上,楚成王問重耳:“公子如果回到晉國,拿什麼來報答我呢?”重耳回答:“美女和金銀財寶,大王都有的是;珍貴的鳥羽、獸皮和象牙,也是由貴國出產流散到晉國去的,都隻是大王不要的了。我能回到晉國,一定不會忘記大王的恩德,今後如果晉楚兩國交兵,我就先退90裏地讓大王。”
重耳在外流亡19年,輾轉8個國家,後來果然回國即位,即晉文公。
公元前632年,楚將子玉率師攻晉。楚國還脅迫陳、蔡、鄭、許四個小國出兵,配合楚軍作戰。此時晉文公剛攻下依附楚國的曹國,晉楚之戰不可避免。
子玉率部浩浩蕩蕩向曹國進發。晉文公聞訊,分析了形勢。他對這次戰爭的勝敗沒有把握,楚強晉弱,其勢洶洶,他決定暫時後退,避其鋒芒。晉文公對外假意說道:“當年我被迫逃亡,楚國先君對我以禮相待。我曾與他有約定,將來如我返回晉國,願意兩國修好。如果迫不得已兩國交兵,我一定先退避三舍。現在,子玉攻打我,我當實行諾言,先退三舍。”他撤退到晉國邊界城濮,仗著臨黃河,靠太行山,足以禦敵。他還派人往秦國和齊國求助。
予玉率部追到城濮,晉文公早已嚴陣以待。晉文公已探知楚國左、中、右三軍,以右軍最薄弱,右軍前頭為陳、蔡士兵,他們本是被脅迫而來,並無鬥誌。子玉命令左右軍先進,中軍隨後。楚右軍直撲晉軍,晉軍忽然又撤退,陳、蔡軍的將官以為晉軍懼怕,又要逃跑,就緊追不舍。忽然晉軍中殺出一支軍隊,駕車的馬都蒙上老虎皮。陳、蔡軍的戰馬以為是真虎,嚇得亂蹦亂跳,轉頭就跑,騎兵不能控製得住。
楚右軍大敗。晉文公派士兵假扮陳、蔡軍士,向子玉報捷:“右師已勝,元帥趕快進兵。”子玉登車一望,晉軍後方煙塵蔽天,他大笑道:“晉軍不堪一擊。”其實,這是晉軍誘敵之計,他們在馬後綁上樹枝,來往奔跑,故意弄得煙塵蔽日,製造假象。子玉急命左軍並力前進。晉軍上軍故意打著帥旗,往後撤退。楚左軍又陷於晉國伏擊圈,遭到殲滅。
等子玉率中軍趕到,晉軍三軍合力把子玉團團圍住。子玉這才發現,右軍、左軍都已被殲,自己已陷重圍,急令突圍。子玉率殘部退回楚國,行至連穀時,楚王派使者責問,子玉被迫自殺。
這個故事中晉文公的幾次撤退,都不是消極逃跑,而是主動退卻,尋找或製造戰機。此戰以謀取勝,奠定了晉文公霸業的基礎。所以,“走”是上策。