在和楚國對抗之前,晉文公也做了另一件事--安定周天子。比起楚國直接和周王室撕破臉的做法,晉文公則接過了齊桓公"尊王攘夷"的大旗。這時期正好狄國進犯中原,把周王室的都城洛邑都打了下來,列國諸侯有慰問天子的,有怒斥蠻夷入侵的,可就沒有出頭發兵的。關鍵時刻,晉文公仗義施出援手,派兵打走了狄國人。這場戰鬥比較簡單,意義卻非同一般。晉文公通過此舉,已經正式繼承了齊桓公"尊王攘夷"的地位,儼然以諸侯國盟主的身份出現。當然這個盟主,還要經曆一個考驗--楚國的考驗。
晉文公之所以如此火速出手,一麵是因為局勢逼人,這時候的楚國,已經儼然擺出了全麵進兵中原的架勢,如果任其在黃河流域日益擴張,整個中原很可能都要並入楚國之手,到時候勢單力孤的晉國自然無法自保。另一個原因,是因為他此時已經過了花甲之年,歸國的時候63歲,放在今天都要退休回家抱孫子了,而他的人生卻剛剛開始,春秋時代人壽命不長,70歲就算是高壽了,晉文公等不得,也等不起了。所以不管條件是否充足,必須要動手了。
公元前632年,晉文公和楚國終於"攤牌"了,事件的導火索,是楚國聯合陳蔡鄭許四國攻打宋國,宋國向晉國求救。事實正如宋襄公臨終前所料,遇到事情找重耳準沒錯。雖然晉國的許多大臣反對輕率動兵,但晉文公依然決定出兵,和楚國決戰。出兵的決定果斷,行動卻不是盲目的,在自身實力有限的情況下,晉文公做了一切努力,先是派人出使齊國和秦國,爭取這兩大國的支持,多年流亡積攢下來的人脈關係,這時候終於派上了用場,齊秦兩國最終同意派兵助戰。與此同時,晉文公又打出了"拱衛周天子"的旗號,大肆渲染楚國冒犯周天子,爭取到了道義上的支持。但此時軍事上的局麵,卻對晉國非常不利,楚國的中軍逼近宋國,右路軍已經占領了齊國故丞相管仲的封地,對南下的晉軍,已經形成了全麵夾擊之勢。
不利局麵下,晉文公決定吃柿子挑軟的捏,楚國這次聲勢浩大不假,但要命的問題就是盟友太多,陳蔡曹等國都是被迫依附楚國的,戰鬥力本來就不強。晉文公的第一個下手對象,就是給楚國充當急先鋒的曹國,曹國這下可遭了當年怠慢晉文公的報應,被打得稀裏嘩啦。接著衛國也兵敗如山倒,兩小國很快就被晉文公平定。楚國聞訊後大怒,雖然楚成王嚴令楚國撤軍,不要與晉文公衝突,但是前線主將,楚國名將成得臣依然率軍冒進,重耳遵循了當年"退避三舍"的諾言,故意節節退讓,一直到城濮地區才停下來,楚國不依不饒,一心想徹底打垮晉軍,戰爭已經不可避免了。
從雙方當時的軍力對比看,楚國還是有本錢的,成得臣雖然擺脫了楚國兩翼,單獨率軍冒進,但他此時的兵力,僅戰車就有1400多輛。晉國方麵就寒磣多了,為了這次戰鬥,晉文公動了血本,出動了國內最精銳的三軍,外加齊秦兩國的軍隊,總數加起來,也不過戰車700輛。這就好比現代戰爭下,如果你的坦克比人家少一半,平原戰爭基本是沒法打的。