晋献公晚年宠爱骊姬,骊姬为了立自己的儿子奚齐作太子,逼死了原来的太子申生。晋献公的另外两个儿子夷吾和重耳被迫远走他国。当重耳到楚国时,楚成王预见他有可能回国做国君,就非常热情地接待他。
在一次宴会上,楚成王问重耳:“公子如果回到晋国,拿什么来报答我呢?”重耳回答:“美女和金银财宝,大王都有的是;珍贵的鸟羽、兽皮和象牙,也是由贵国出产流散到晋国去的,都只是大王不要的了。我能回到晋国,一定不会忘记大王的恩德,今后如果晋楚两国交兵,我就先退90里地让大王。”
重耳在外流亡19年,辗转8个国家,后来果然回国即位,即晋文公。
公元前632年,楚将子玉率师攻晋。楚国还胁迫陈、蔡、郑、许四个小国出兵,配合楚军作战。此时晋文公刚攻下依附楚国的曹国,晋楚之战不可避免。
子玉率部浩浩荡荡向曹国进发。晋文公闻讯,分析了形势。他对这次战争的胜败没有把握,楚强晋弱,其势汹汹,他决定暂时后退,避其锋芒。晋文公对外假意说道:“当年我被迫逃亡,楚国先君对我以礼相待。我曾与他有约定,将来如我返回晋国,愿意两国修好。如果迫不得已两国交兵,我一定先退避三舍。现在,子玉攻打我,我当实行诺言,先退三舍。”他撤退到晋国边界城濮,仗着临黄河,靠太行山,足以御敌。他还派人往秦国和齐国求助。
予玉率部追到城濮,晋文公早已严阵以待。晋文公已探知楚国左、中、右三军,以右军最薄弱,右军前头为陈、蔡士兵,他们本是被胁迫而来,并无斗志。子玉命令左右军先进,中军随后。楚右军直扑晋军,晋军忽然又撤退,陈、蔡军的将官以为晋军惧怕,又要逃跑,就紧追不舍。忽然晋军中杀出一支军队,驾车的马都蒙上老虎皮。陈、蔡军的战马以为是真虎,吓得乱蹦乱跳,转头就跑,骑兵不能控制得住。
楚右军大败。晋文公派士兵假扮陈、蔡军士,向子玉报捷:“右师已胜,元帅赶快进兵。”子玉登车一望,晋军后方烟尘蔽天,他大笑道:“晋军不堪一击。”其实,这是晋军诱敌之计,他们在马后绑上树枝,来往奔跑,故意弄得烟尘蔽日,制造假象。子玉急命左军并力前进。晋军上军故意打着帅旗,往后撤退。楚左军又陷于晋国伏击圈,遭到歼灭。
等子玉率中军赶到,晋军三军合力把子玉团团围住。子玉这才发现,右军、左军都已被歼,自己已陷重围,急令突围。子玉率残部退回楚国,行至连谷时,楚王派使者责问,子玉被迫自杀。
这个故事中晋文公的几次撤退,都不是消极逃跑,而是主动退却,寻找或制造战机。此战以谋取胜,奠定了晋文公霸业的基础。所以,“走”是上策。