晋国和楚国,晋国赢了。
公元前633年,楚国攻打宋国,宋国向晋国急求援助。先轸认为帮助宋国是树立晋国威望的良机,说服晋文公援宋。楚国和曹、卫两国订立盟约。前632年,齐国和晋国结盟。
晋军攻下曹国,生擒曹共公。慑于晋国声威,曹、卫两国相继背叛楚国。楚成王为避免与晋国交战,命子玉将楚军撤出宋国。但子玉反而率军北上试图与晋军决战。
楚将宛春出谋,建议先向晋国要求复曹、卫两国,楚军解宋国之围,这样成功的话就可以令宋、曹和卫三国感激楚国,若晋国不允,则曹、卫、宋三国则怨恨晋国,这样就可以进可攻退可守。子玉接受,派宛春为使,但被识破,反被晋军智激,继续猛攻。
昔日晋国公子重耳流亡到楚国时,楚成王询问他如果得到君位,如何报答楚国。重耳说今后如果在战场相见,他先主动撤退三舍(九十里)。晋楚交战时,晋文公(重耳)、先轸等如约率军先撤退三舍,楚国将领成得臣追击,在城濮决战。根据这一故事,日后形成了成语“退避三舍”,指主动退避。
城濮之战的地点是在现在的山东省鄄城县西南临濮集。