晋文公于周襄王二十年,即文公五年(公元前632年)初,率军由棘津(河北滑县东北)渡河,打击附楚的曹、卫,妄图诱楚去援以解宋围。正月占卫五鹿(河北浑歉东南),仲春进至敛盂(河北濮阳西北)取齐昭公会盟,皆乡楚丘(河北滑县西南)的卫人逐其君落晋。三月攻占曹皆陶丘(山东定陶东南)。但楚军没有受变更,反而减松围攻商丘。
宋背晋垂危,晋文专用先轸倡议,使用秦、齐“喜贿喜顽”的心思,使用中交盘算造制秦、齐取楚的盾盾。一壁让宋重贿秦、齐,请两国出头供楚退军,一壁分曹、卫之天取宋,脆其抗楚信心。商丘已能攻陷,而曹、卫之天又被晋收于宋国,楚果而回绝退军。秦、齐遂发兵助晋,构成三强团结对于楚的策略格式。
楚成王睹局势没有利,恐秦伺机攻厥后圆,退至申邑(河北荥阳东南),并令围攻商丘以及缗邑和占据谷邑的楚军撤回。但围攻商丘的主将子玉,自满自信,脆请取晋一战。楚成王信心坚定,允许子玉倡议,但又没有肯齐力决斗,仅派王室亲兵600人删援子玉。子玉派人取晋谈判:如晋许曹、卫复国,楚即解宋之围。晋国君臣以为局势无利,但愿决斗,但恐没有允子玉前提,将遭宋、曹、卫三国恩恨。
因而一壁暗许曹、卫复国,劝其取楚尽交,一壁截留楚青鸟使以激愤子玉。子玉果喜而供战,率军进逼陶丘。晋文公为疲敝楚军,诱使子玉沉敌深切,以便正在预约疆场取楚决斗。遂退却三舍(正在现代一舍为30里,三舍为90里),至乡濮取秦、齐军会集。
四月月朔,楚军进至乡濮,初二,单圆对于阵。晋军正在秦、齐军增援下设置为上、中、下全军;楚军以陈、蔡军为左军,申、息两军为左军,主力粗钝为中军。晋统帅先轸命令尾先击溃较强的楚左军;并让晋上军佯退,于阵后拖柴扬尘,造制后军已经退的假象,以诱楚左军攻击,使其表露侧翼,我后回军取中军真施开击,又将楚左军击溃。
子玉实时支住军力,圆免于中军败溃。楚军退至连谷(河北西华境)时,子玉他杀。此战,晋文公及先轸等,决斗前充实使用中交盘算,是由真力造胜背盘算造胜的转机面;决斗中,晋军先强后强,各个击破,示威逼敌,正在战术上也有所收展。子玉觉得晋军害怕,率军逃至乡濮。两军对于垒,晋军分上、中、下全军安排:上军正在左,下军正在左,中军居中,先轸及晋文公坐镇中军批示。
楚联军亦按左、中、左全军设置:陈、蔡军编为左军,真力较强;一部楚军编为左军,战争力较强;中军为楚军粗钝,由子玉批示。二十一年四月初二,决斗入手下手。晋下军把驾车的马受上皋比,尾先背楚左军收起固守,陈、蔡军一触即溃,齐军崩溃。那时,晋上军横起两里年夜旗,并正在阵后扬起灰尘,佯拆前进。子玉没有察实真,命令左军逃击。待其凸起之时,晋元帅先轸批示中军背其表露翼侧打击,断其进路,晋上军亦回首夹攻。楚左军年夜部被歼。子玉睹两翼均败,年夜势已经往,慢闲命令支兵,退回楚天。乡濮一战末以晋胜楚败而了结。战后,晋文公被周襄王策命为侯伯,一跃成为华夏霸主。