在和楚国对抗之前,晋文公也做了另一件事--安定周天子。比起楚国直接和周王室撕破脸的做法,晋文公则接过了齐桓公"尊王攘夷"的大旗。这时期正好狄国进犯中原,把周王室的都城洛邑都打了下来,列国诸侯有慰问天子的,有怒斥蛮夷入侵的,可就没有出头发兵的。关键时刻,晋文公仗义施出援手,派兵打走了狄国人。这场战斗比较简单,意义却非同一般。晋文公通过此举,已经正式继承了齐桓公"尊王攘夷"的地位,俨然以诸侯国盟主的身份出现。当然这个盟主,还要经历一个考验--楚国的考验。
晋文公之所以如此火速出手,一面是因为局势逼人,这时候的楚国,已经俨然摆出了全面进兵中原的架势,如果任其在黄河流域日益扩张,整个中原很可能都要并入楚国之手,到时候势单力孤的晋国自然无法自保。另一个原因,是因为他此时已经过了花甲之年,归国的时候63岁,放在今天都要退休回家抱孙子了,而他的人生却刚刚开始,春秋时代人寿命不长,70岁就算是高寿了,晋文公等不得,也等不起了。所以不管条件是否充足,必须要动手了。
公元前632年,晋文公和楚国终于"摊牌"了,事件的导火索,是楚国联合陈蔡郑许四国攻打宋国,宋国向晋国求救。事实正如宋襄公临终前所料,遇到事情找重耳准没错。虽然晋国的许多大臣反对轻率动兵,但晋文公依然决定出兵,和楚国决战。出兵的决定果断,行动却不是盲目的,在自身实力有限的情况下,晋文公做了一切努力,先是派人出使齐国和秦国,争取这两大国的支持,多年流亡积攒下来的人脉关系,这时候终于派上了用场,齐秦两国最终同意派兵助战。与此同时,晋文公又打出了"拱卫周天子"的旗号,大肆渲染楚国冒犯周天子,争取到了道义上的支持。但此时军事上的局面,却对晋国非常不利,楚国的中军逼近宋国,右路军已经占领了齐国故丞相管仲的封地,对南下的晋军,已经形成了全面夹击之势。
不利局面下,晋文公决定吃柿子挑软的捏,楚国这次声势浩大不假,但要命的问题就是盟友太多,陈蔡曹等国都是被迫依附楚国的,战斗力本来就不强。晋文公的第一个下手对象,就是给楚国充当急先锋的曹国,曹国这下可遭了当年怠慢晋文公的报应,被打得稀里哗啦。接着卫国也兵败如山倒,两小国很快就被晋文公平定。楚国闻讯后大怒,虽然楚成王严令楚国撤军,不要与晋文公冲突,但是前线主将,楚国名将成得臣依然率军冒进,重耳遵循了当年"退避三舍"的诺言,故意节节退让,一直到城濮地区才停下来,楚国不依不饶,一心想彻底打垮晋军,战争已经不可避免了。
从双方当时的军力对比看,楚国还是有本钱的,成得臣虽然摆脱了楚国两翼,单独率军冒进,但他此时的兵力,仅战车就有1400多辆。晋国方面就寒碜多了,为了这次战斗,晋文公动了血本,出动了国内最精锐的三军,外加齐秦两国的军队,总数加起来,也不过战车700辆。这就好比现代战争下,如果你的坦克比人家少一半,平原战争基本是没法打的。