三十五年時,晉國公子重耳路過楚國前往秦國,楚成王以招待諸侯的禮節宴請了重耳,並且饋贈他很多禮物,還派兵送他前往秦國。
今年,魯僖公前來請求楚國派兵攻打齊國,楚成王派申侯領兵攻打齊國,並奪取了谷邑,並將齊桓公的兒子雍安置在了谷地。之後齊桓公的七個兒子全都逃奔到了楚國,而楚成王把他們全都封為大夫。
夏季,楚國又出兵討伐宋國,宋國自知不能抵抗,於是派公孫固向晉國告急求援。公孫固見到晉文公便說:“晉公可還記得宋國是如何對待您的?當年您在列國遊學,行至宋國,車輛馬匹皆毀,是襄公認為您是仁德之人,有君子之風,故而送您良馬香車。
如今宋國有難,您報答恩人,進而稱霸天下的時機就在今天了,宋國也是諸夏後裔,您救了我們,當您要稱霸天下時,難道我宋國不會支援您嗎?”
這時狐偃說:“楚國剛剛佔有曹國,而且初次與衛國通婚,假如攻打曹國、衛國,楚國一定救援,那麼宋國就得到解脫了。”於是晉文公決定出兵,先討伐楚國的同盟曹、衛。
原本衛國是白國的盟國,有幾代互為聯姻,可是衛國到了後面,諸公子是越來越差,不僅才能差,品德也有瑕疵,導致白氏宗女不願遠嫁衛國,故而衛白之間的聯姻斷了。但是白國在衛國的影響力還是十分深厚的,經常有衛國人前往白國求學。
晉文公五年,白國一百三十九年
春
晉文公以荀林父為御戎、魏犨為車右,率領晉軍八百乘南下就宋。
冬季十二月,晉兵首先佔領了太行山以東的地方,並將原邑封給了趙衰。
在討伐曹國時,他向衛國借路,衛成公不答應。晉軍只好迂迴從南渡過黃河攻打曹國,討伐衛國。正月,晉軍攻下五鹿。
二月,重耳與齊昭公在斂盂結盟,秦穆公也派了將軍帶兵來參加。這時,衛成公見晉大軍壓境,而晉、齊又結為盟好,還有秦軍助陣,感到害怕了,於是請求參加結盟,但是晉文公不答應。
衛成公轉而又想與楚國結盟,結果衛國人反對,並把衛成公趕出衛國,想以此討好晉國,換得晉軍不打衛國。於是衛成公住在襄牛,公子買在衛國防守。楚國來救援衛國,但是被衛國拒之門外,怒而攻城,但未能取勝,不得不退兵。最後晉軍不戰而得衛國。
三月,晉軍南下攻曹,丙午日,晉軍攻入曹都。
晉軍攻擊曹、衛,本欲引誘楚軍北上,坐收以逸待勞之功。但楚軍並不上鉤,而不斷猛攻宋國,宋國再次向晉軍告急。晉文公想救宋,就應攻打楚國,又因為楚國曾對自己有恩,晉文公便不想攻楚,可宋國也對晉國有恩,如若不救,必會失宋,以至於陷於戰略被動地位,晉文公為此舉棋不定。
這時,先軫說:“君上,我們可以分割曹國、衛國的土地給宋國,楚國便會急於營救曹國、衛國,如此一來,楚國就會解除對宋國的包圍了。”
晉文公聽取了先軫的意見,楚成王真的率軍離開了宋國。
楚將子玉驕傲自負,反對楚成王撤軍,堅請與晉一戰。子玉說:
“君上,您對待晉公仁義至厚,不僅以諸侯之禮待他,還派兵送他出境,這是何等的大恩啊!如今他明知楚國與曹、衛兩國關係好卻有意討伐它們,這是輕視您,以及背棄仁義的舉動,天下人一定不會幫助他,這正是討伐他的時候啊,這時我們攻打他,就是白公也不能說什麼,我實在不知道您在憂慮什麼?”
楚成王說:“重耳在外逃亡了十八年,受困受苦的時間太久了,如今終於返回晉國。因他嚐盡了艱難險阻,因此他就能正確對待百姓,這是毋庸置疑的,這是上天為他的開路啊,他是不可阻擋的啊!”
子玉堅持請戰說:“我不敢說這次一定能取得勝利,只希望因此能封住那些進讒言之人的口。”楚成王十分生氣,給了他很少的兵力。
子玉決定先激怒晉文公,以讓他作出失禮之舉,這樣和晉軍之戰,才能更好地戰勝。於是派宛春告訴晉文公說:“請您恢復衛侯的君位並歸還曹國的土地,這樣我也會解除對宋國的包圍。”
大夫咎犯說:“子玉太無禮了!”
先軫卻說:“能使人心安定就能稱之為有禮。如果楚國的一句話能夠使三個國家安定,可是您的一句話卻能使這三個國家滅亡,那麼就是我們無禮。
而如果我們不答應楚國,那就是放棄了宋國。不如暗中答應恢復曹侯、衛侯的地位,讓他們與楚斷交,以此來引誘楚國,同時扣留宛春以激怒楚國,等戰事發生後再另想其他的計謀。”
晉文公於是就把宛春扣押在了衛國,並且私下答應恢復曹國、衛國。曹國、衛國於是與楚國絕交了。子玉聽後非常生氣,率軍攻打晉軍,晉軍不斷後退。
這時晉國的將士都對晉文公不斷下令撤退感到疑惑不解,於是派了一個軍吏請求詢問原因。晉文公說:“從前我在楚國時,曾與楚成王有過約定,交戰時晉軍會向後撤退三舍之地,我怎麼能背棄自己的承諾呢?”
晉軍都知道後退的原因,原來不是晉公畏戰,而是為了報恩,於是將士們雖然不斷後退,但是士氣卻越發高昂。因為楚軍已經在外征戰很久了,都想撤退回家,可是子玉不答應。
四月戊辰日,宋成公、齊將、秦將以及晉侯在城濮駐紮。
己巳日,與楚軍交戰,楚軍被打敗,子玉帶領殘兵逃走了。
甲午日,晉軍班師回到衡雍,在踐土為周襄王修建了宮殿。鄭國也曾幫助過楚軍,如今楚軍戰敗了,鄭國很是懼怕,於是派使者向晉文公請求結盟。晉文公同意了,於是與鄭公訂立了盟約。