楚成王听说晋国一连气打下了卫国和曹国,就打发人叫成得臣回去,还告诉他说:“重耳在外头跑了十九年,现在已经六十多了。他是吃过苦、挺有经验的人,咱们跟他打仗,未必能占上风,你还是趁早回来吧!”
成得臣以为宋国早晚可以拿下来,不愿意退兵。他派人去对楚成王说:“请再等几天,等我打了胜仗回来。如果碰见晋国人,也得跟他们拼个死活。万一打败了,我情愿受军法处置。”楚成王一瞧成得臣不回来,心里挺不痛快,就问已经退职的令尹子文 (令尹,是楚国的官衔,相当于中原的相国) 。子文说:“现在晋国挺强,重耳帮助宋国是打算做霸主。我想还是关照子玉 (成得臣字子玉) 留点神,千万别跟他抓破了脸。能够讲和最好,还能得到一个平分南北的局面。”楚成王再派人去通知成得臣。成得臣经不住好几次通知,只好软下来。他下令暂时停止进攻,可不好意思马上退兵。他派人去对晋文公说:“楚国对于曹国和卫国,正像晋国对于宋国一个样儿。您要是恢复曹国和卫国,我就不打宋国,咱们彼此和好,省得叫老百姓吃苦。”晋文公还没说什么呢,狐偃开口就骂:“成得臣这小子好不讲理!他放了一个还没打败的宋国,倒叫我们恢复两个已经灭了的国家。哪儿有这么便宜的买卖?”他把成得臣派来的使臣扣起来,把手下的人放回去。
晋文公又耍了一些手腕,一方面打发使臣去联络秦国和齐国,请他们一块儿来帮助中原的诸侯,抵御楚国这个“蛮族”;一方面通知卫成公和曹共公,叫他们先去跟楚国绝交,将来一定恢复他们的君位。他们当然是怎么说就怎么依的,就写信给成得臣。成得臣正替这两国说情,他们倒来跟他绝交。他这一气,差点气昏过去。双脚乱跺地嚷着说:“这两封信明摆着是那个饿不死的老贼逼他们写的。算了!不打宋国了!去找重耳这老贼去!打退了晋国再说。”他就带着兵马,一直赶到晋国人驻扎的地方。
中军大将先轸一瞧楚国人过来,就打算立刻开战。狐偃说:“当初主公在楚王面前说过,要是两国打仗,晋国情愿退避三舍。这可不能失信。”将士们都反对,说:“这怎么行?晋国的国君还能在楚国的臣下面前退避吗?”狐偃说:“咱们不能忘了当初楚王对咱们的好意。退避三舍是向楚王表示好意,哪儿是向成得臣退避呢?再说,要是咱们退兵,他们也退兵,两国就容易讲和了。那不是挺好吗?要是咱们退兵,他们还追上来,那就是他们的不是了。咱们有理,他们没理,咱们的将士个个理直气壮,他们的将士还是自高自大,两国打起来,对咱们就有利。”大家才没有话说了。晋文公吩咐军队向后撤退。一直退了九十里,到了城濮 (卫地,今河南濮阳一带) ,才停了下来。这时候,秦国、齐国、宋国的兵马也先后到了。
楚国人一瞧晋国人往后退,大家伙儿不用提多痛快了。大将斗勃对成得臣说:“晋国的国君直躲着楚国的大臣,咱们已经有了面子了。大王早就叫咱们回去,咱们也不能太固执。我瞧咱们既然有了面子,就下台阶吧。”成得臣说:“现在回去已经晚了,倒不如打个胜仗,还可以将功折罪。咱们追上去吧!”楚国人就追到了城濮。双方的军队都在那边驻扎下来,好比密密层层的黑云彩遮住了整个天空,随时随刻都能来个狂风暴雨。
晋文公向来知道成得臣的厉害,将士们也都知道楚国从来没打过一回败仗。再说晋国的兵马退了九十里了,楚国人一步死盯一步,大家伙儿心里多少有点害怕。晋文公尤其不放心,万一打个败仗,别说不能做霸主,从这儿往后,中原诸侯只好听楚国的了。从前齐桓公和管仲还不敢轻易跟他们开仗哪!他越想越担心,越担心越心虚。他的心好像是给蜘蛛网粘住了的小虫,越挣扎缠得越紧。到了晚上,翻过来掉过去地睡不着,好容易刚睡着,就做了个噩梦:蜘蛛不但用丝缠住他,还真咬他。
第二天,晋文公对狐偃说:“我可有点害怕。昨儿晚上我做了个梦:我好像还在楚国,跟楚王摔跤。我摔不过他,摔了一个大仰壳儿。他趴在我身上,直打我脑袋,还吸我的脑浆。到这时候我脑袋还有点疼哪!”狐偃可真会说话,他直给晋文公打气,说:“大喜,大喜!咱们准打胜仗!”晋文公说:“这话怎么讲?”狐偃说:“主公仰面朝天,分明是得到了老天爷的帮助;楚王向您一趴,还不是向您请罪吗?”晋文公一听他这么一说,脑袋也不疼了,也觉得自己有了胆量,就鼓动将士们准备跟楚国人对打。
两边一开战,先轸故意打个败仗。成得臣骄傲自大,一向不把晋国人搁在眼里,一看他们逃跑,就不顾前后地直追上去。先轸就这么把楚国人引到有埋伏的地方,切断他们的后路,杀得他们七零八落,有腿的快快地跑了。晋文公连忙叫先轸嘱咐将士儿郎们,只要把楚国人赶跑就是了,不许追着杀,省得辜负了楚王先前的情义,留个后路,日后还可跟楚国和好。楚国的将军成得臣、斗勃、斗宜申、斗越椒带着那些败兵,沿着睢水跑。跑了一阵,正打算歇歇腿,突然一阵鼓响,出来了一队晋国的人马。领头的那个将军正是楚国人顶害怕的大力士魏犨。魏犨自从胸脯好了以后,格外卖力气。他瞧见了楚国的败兵,就把他们围起来,打算一个一个地收拾他们。他正在那儿要动手的时候,忽然来了个“飞马报”,大声嚷着说:“千万别杀!主公有令:让楚国的将士回去,好报答楚王的情义!”魏犨只好叫士兵们让开一条去路,吆喝着说:“便宜了你们!”楚国人这才低着脑袋,急急忙忙地跑了。
成得臣一直退到连谷城 (楚国地名) ,打发儿子成大心带着剩下的军队去见楚成王。楚成王气冲冲地数叨着说:“我一直告诉你们别跟晋国人开仗,你们偏不听我的话!你父亲自己说过愿受军法处置,还有什么说的?”成大心说:“我父亲早知道有罪,当时就要自杀。我跟他说,见了大王,让大王处治吧!”楚王说:“打了败仗的将军,不能活着回来,这是楚国的规矩,用不着废话。”成大心只好哭着回到连谷城去了。
有一位大臣知道了这件事,赶紧去见楚成王,对他说:“子玉是个猛将,就是没有计谋,本来就不该叫他独个儿带兵,让他自作主张。要是有个谋士在旁边,一定能够打个胜仗。这回虽说是打败了,可是以后能打败晋国的还得是他。大王不如免了他的死罪吧。”楚成王一想这倒是,就立刻打发人去传命令:“败将一概免死。”可是传令的人赶到连谷城,成得臣已经自杀了。
晋国打败楚国的消息传到了洛阳,周襄王听了又是高兴,又是害怕。高兴的是从这儿往后,楚国大概不敢再来侵犯中原了;怕的是晋国太强,往后也不容易对付。对这么强大的诸侯他也不得不拉拢拉拢,就派大臣王子虎去慰劳晋文公。晋文公趁着这个好机会,跟王子虎约好了日子和地点,准备召集诸侯,订立盟约。公元前632年,晋文公带着宋、齐、鲁、郑、陈、蔡、邾、莒等国的诸侯到了践土 (郑国地名,今河南原阳一带) ,开个大会。秦国远在西方,向来没跟中原诸侯会过盟。许国一直是服侍楚国的,也没来。卫成公还在襄牛,曹共公押在五鹿,他们当然不能到会。周襄王就叫王子虎跟别的大臣去会见诸侯。晋文公献上楚国的俘虏一千名,兵车一百乘。王子虎他们替天王慰劳各路诸侯,叫他们好好地扶助王室,自己别打来打去。当时就正式称晋文公为盟主。列国诸侯挺热闹地在王子虎面前“歃血为盟”。
成语“退避三舍”出自《左传·僖公二十三年》。退,后退;避,躲避;舍,春秋时期行军三十里称为一舍。楚庄王曾在晋文公逃亡的时候帮助过他,晋文公答应两国交战时退兵九十里以报答恩情。这个成语后来引申为与人发生冲突时主动退让,或者由于对方太强而不敢与之相比。