戰鬥開始,晉下軍副將胥臣命令士卒把駕車的馬蒙上虎皮,首先向楚右軍發起攻擊,陳、蔡的軍隊跟從楚軍本是不得已,遭到這一突然進攻,立即潰不成軍,蔡國公子印也被殺死,晉上軍主將狐毛另設前軍兩隊,出擊楚軍的逃兵,楚軍右翼被徹底打垮;晉下軍主將欒枝讓士卒砍伐木柴拖在車後,揚起塵土,偽裝敗逃,楚中軍立即發起追擊,左軍主將子西求勝心切,以為晉軍主力潰逃,帶部率先追趕,造成楚軍側翼空虛。晉見楚中計,元帥先軫率領中軍精銳攔腰截擊,狐毛、狐偃反轉回頭殺來,前後夾擊,楚國的左軍也被打垮。子玉見左右兩軍全垮,急忙收兵,這才不至於全軍覆滅。
城濮之戰以晉勝楚敗而告結束。晉軍在楚營內歇兵三天,班師而歸。向周天子獻上俘獲的戰車100輛和俘虜的步兵1000人。周天子設宴款待晉文公,命令大臣尹氏、王子虎和內史叔興父用策書頒命晉文公為諸侯之長,並賞賜了文公許多財物。
楚成王本不願與晉交戰,聽說子玉大敗而回,就派人對子玉說:“你失敗回來,有何麵目見申、息兩地的父老呢?”逼子玉自殺謝罪。但在打發走使者後,成王又後悔起來,忙派人收回成命,這時子玉在連穀(今河南西華縣南一帶)已自殺了。
城濮之戰使晉國國威大振,以前與楚國結盟的國家紛紛投靠晉國。文公在踐土(今河南原陽縣西南)建造王宮,與諸侯會盟,占據了霸主的地位。而楚國北上的戰略在這一戰中受到沉重的打擊,此後一段時間隻好轉向南方經營。
燭之武退秦師
周襄王二十年(前632年),晉楚城濮之後,晉國確立了中原霸主的地位。晉文公由此被列為春秋五霸之一。
但是,大國之間的爭霸戰爭,給小國帶來的卻是災難。特別是那些夾在晉、楚之間的諸侯國,更是疲於應付,左右為難。楚來則迎楚,晉來則迎晉,忍辱含垢,委屈求全。稍有不慎,便會遭到大國的攻伐。鄭國便是其中之一。
周襄王二十年(前632年),當楚軍揮師北上,與晉爭霸時,鄭國因楚近晉遠,不得不委曲求全,而站在楚國一邊。這一下惹惱了晉文公。城濮之戰後的第二年(周襄王二十一年,前631年)夏天,晉文公糾合宋、齊、陳、蔡、秦等諸侯公於霍泉(在洛陽城中)。除了重申踐土之盟外,便是商議討伐鄭國。最後,晉國和秦國決定聯合出兵。周襄王二十二年(前630年)的春天,晉文公先派了一支小部隊對鄭國作試探性進攻,以觀其可攻與否。到了九月,晉國和秦國便大舉出兵,攻入鄭國境內,包圍了鄭國的都城。晉文公攻鄭的理由是:鄭國君文公在自己流亡路過鄭國時曾對自己無禮;後來又背晉助楚。入鄭後,晉軍大營駐紮在函陵(今河南新鄭縣北13裏),秦軍駐紮在汜南(今河南中牟縣南,與函陵相距甚近)。晉軍由晉文公親自指揮,而秦軍則由秦穆公自己指揮。
晉、秦軍圍鄭後,鄭都城中一片惶恐。鄭國大夫佚之狐感到事態嚴重,便去找鄭文公,對鄭文公說:“國家的形勢已經很危急了。您若能夠讓燭之武去見秦伯,和秦伯談一下,秦軍必然撤退。那樣晉軍也會撤退。”鄭文公聽從了佚之狐的建議,去找燭之武商議。燭之武聽了鄭文公的請求,便推辭說:“臣年輕的時候,尚且不如別人。如今臣已經老了,做不了什麼事了。這個任務我完成不了。”鄭文公知道燭之武在埋怨自己不早日任用他,隻是到了危急的時候才想起他,便懇切地道歉說:“我不能早日任用你,讓你發揮才能,如今事情緊急了才來求你,這是寡人的過錯。但是,鄭國如果亡了,對您也沒有什麼好處。”燭之武答應了。夜裏,燭之武從城裏縋牆而出,摸到秦軍的軍營裏,見到了秦穆公。燭之武對秦穆公說:“秦軍和晉軍圍鄭,鄭已知己之必亡。然而,如果鄭國滅亡而對您有好處,那我們也願意滅亡。越過別的諸侯國而以遠地為己邊邑,您知道那是非常困難的事情。幹嗎要滅亡鄭國而讓鄰國增加力量呢?鄰國實力增加了,您的力量可就削弱了。如果留著鄭國而不滅亡它,讓鄭國為秦東道之主人,秦國外交之往來,鄭國可以助其乏困,這對您也並無害處。而且,您也曾經有恩於晉國。晉惠公夷吾答應割給秦國焦(今河南三門峽西)、瑕(今河南靈寶東)二邑,可是早晨歸國,晚夕即築城以備秦,這是您所知道的。晉國的貪欲哪裏有滿足的時候?既然東侵鄭國以開拓其封疆,又要放恣其心力而西拓其邊界,如不損害秦國,其土地將何從而得?損害秦國而有利於晉國,惟君圖之。”秦穆公聽了燭之武的話,覺得很有道理,損害秦國而有利於晉國的事情,他自然不願意做。因此,他單獨和鄭國簽訂了盟約,讓杞子、逢孫、楊孫留下來幫助鄭國戍守,便引軍撤回秦國去了。