春秋时期,晋国君主晋献公的宠妃骊姬为了让自己的儿子继承王位,害死了太子,又害得太子的两个弟弟重耳和夷吾逃亡国外,各奔东西。重耳逃亡到楚国时,得到了楚成王的厚待,重耳非常感激。有一天,楚王又设宴招待重耳。酒过三巡,楚王问重耳:“日后公子若返回晋国做了国君,如何报答寡人?”重耳一时不知该怎样回答,说:“楚国富饶,什么都不缺,我实在不知该如何报答。假如真的有那一天,我希望与楚国永远和睦相处。”楚王已有几分醉意,说:“列国争霸,也说不定有一天楚国会与晋国交兵,公子你怎么办?”重耳老老实实地回答:“倘若真是不得已交兵,我愿命令部队退让三舍(九十里)。”意思是说不想与楚国发生战争。
后来,秦国出兵平定了晋国内乱,杀灭群奸,重耳得以回国做了国君,称晋文公。他整顿朝纲,发展生产,逐渐使国家变得强盛起来。
楚王早有称霸中原的野心,第一步想先消灭宋国。宋襄公便派人向晋国求援。
晋文公与群臣商量。狐偃、赵衰等大将主张不要直接与楚军交锋,而去讨伐归附楚国的卫、曹两个小国。
晋文公于是派先轸为大将,顺利地攻克了卫、曹两国,并俘获了这两国的君主。
楚国大将成得臣得到消息,只好暂缓攻打宋国,派使者见晋文公,表示愿意不再伐宋,希望晋军能退出卫、曹领地。
晋文公接受条件,让卫成公和曹共公复国,但要求他们从此臣服晋国。
成得臣得知消息之后暴跳如雷,决意要与晋文公决一死战。他指挥大军,向晋国发起进攻。
晋文公想起当年对楚王的承诺,便命令部队向后撤退。众将都不解,说:“主公难道怕成得臣吗?”晋文公说:“不,成得臣有勇无谋,我怎么会怕他呢?只是我当初与楚王有诺:一旦交兵,我当退避三舍,不可失信。”
于是,晋军一口气退了九十里,在一个名叫城濮的地方驻扎下来。
楚军中有的将领主张不必追了,此时收兵也算不战而胜,面子挣回来了。可是成得臣却丝毫听不进去,说:“他知道不敌我军,于是胆气尽丧,你们都给我追,不要停下!”
楚军追到城濮,与晋军相遇。一场恶战已不可避免了。在此之前,晋军大将先轸已巧妙布阵,在许多险要地段设下埋伏,将楚军切为几段,首尾不能相顾,终于大败,损失惨重。成得臣只得拔剑自刎而死。
晋文公因城濮之战声名大振,终成一代霸主。