公元前633年,楚國攻打宋國,宋國向晉國求救。第二年春天,晉文公派兵攻佔了楚的盟國曹國和衛國,要他們與楚國絕交,才讓他們復國。楚國被激怒了,撤掉對宋國的包圍,來和晉國交戰。兩軍在城濮(今山東鄄城西南)對陣。
晉文公重耳做公子時,受後母迫害,逃到楚國,受到楚成王的款待。楚成王問重耳以後如何報答,重耳說:“美女、綢緞等等,您都有了,我能給您什麼呢?假如托您的福我能回國執政,萬一遇到兩國發生戰爭,我就撤退三舍(一舍等於三十里)。如果楚國還不能諒解,雙方再交手。”
為了實現當年的諾言,晉文公下令撤退九十里。楚國大將子玉率領楚軍緊逼不舍。
當時,楚國聯合了陳、蔡等國,兵力強;晉國聯合了齊、宋等國,兵力弱。應該怎樣作戰呢?晉文公的舅舅子犯說:“我聽到過這樣的說法:對於注意禮儀的君子,應當多講忠誠和信用,取得對方信任,在你死我活的戰陣之間,不妨多用欺詐的手段迷惑對方。你可以採取欺騙敵軍的辦法。”
晉文公聽從了子犯的策略,首先擊潰由陳、蔡軍隊組成的楚軍右翼,然後主力假裝撤退,引誘楚軍左翼追趕,再以伏兵夾擊。楚軍左翼大敗,中軍也被迫撤退。
這就是歷史上著名的以弱勝強的城濮之戰。晉國取勝后,與齊、魯、宋、鄭、蔡、莒、衛等國會盟,成為諸侯霸主。