公元534年,统一了我国北方的北魏分裂为东魏和西魏两个政权。西魏建都长安(今陕西西安),丞相宇文泰把持政权。东魏建都邺城(今河北漳南),丞相高欢把持政权。双方为吞并对方政权,进行过多次的战争。
东魏依仗地广人多,军事上占有相对的优势,便出动军队企图占领西魏重要关口潼关,但被西魏击退,没有成功。此后,东魏两次出军攻战潼关未成。对于东魏高欢多次袭击西魏要地,宇文泰愤愤不平,便于公元537年8月率军东进,攻占了东魏的军事要地恒农(今河南三门峡市西)。没过多久,东魏高欢就命大将高敖曹领兵3万,由洛阳向西反击恒农。同时自率主力20万,由太原、临汾南下,从蒲坂(今山西永济西)西渡黄河,进袭关中。
从高欢行动的趋向来分析,他是想分二路向长安方向推进。一路由高敖曹军从洛阳至恒农,夺回恒农后向潼关、渭南方向推进;另一路由高欢亲自带领,从蒲坂西渡黄河,占领军事要道华州,然后向前推进,与高敖曹军会合。
宇文泰得知高欢西进的消息,决定尽全力阻止东魏军西进。一面派人到各地征调兵马,一面从恒农抽调出近万人回救关中,东魏高敖曹趁势包围了恒农。高欢军渡过黄河后,即刻攻华州城,但是华州城坚难攻,于是高欢军队在距华州北30余里的许原驻扎。
宇文泰军回到渭南后,便欲攻打高欢。部将们认为,各地征调的兵马还未赶到,敌我兵力悬殊较大,还是暂时不迎战为好。宇文泰坚持己见。他解释说:现在东魏军远道而来,首攻华州不下,便屯兵许原观望,说明他们军队人数虽多,但没战斗力,也没有苦战克敌的精神,我们趁他立足未稳,地理不熟,趁机迎击。如果让其站稳脚跟,继续西进,逼近长安,那样形势对西魏将更为不利,宇文泰的解释打消了部将的疑虑。西魏军抓紧做好北渡渭水的准备。
9月底,西魏军在渭水上搭好浮桥。宇文泰亲率轻骑7000,携带三天的粮秣,北渡渭水。10月1日,宇文泰军进至距东魏军60里处的沙苑(今陕西大荔南)驻扎下来,立即派入化装成许原一带的居 9民,潜入东魏兵营附近活动,侦察高欢军队的情况。经过侦察,宇文泰证实了自己的判断:对方人数多,战斗力不强。而这时,宇文泰部将李弼建议利用10里渭曲(渭河弯曲部分)沙丘起伏、沼泽纵横、芦苇丛生的有利地形,采取预先埋伏,布设口袋,诱敌深入的伏击之计,一举消灭敌人。宇文泰采纳这个建议,决定利用渭曲复杂的地形环境打一场歼灭战。
高欢听说西魏军已进沙苑,便决定与之决战。高欢取胜心切,在未认真部署的情况下便从许原率兵前来交战。西魏国见敌军出动,便依照原计划在渭曲布设了埋伏,以击鼓为号,以突然袭击的战法,围歼东魏军于既设阵地。高欢军行进至渭曲附近,大将解律羌举见到渭曲沙丘起伏,沼泽地深处长满茂密的芦苇,认为这苇深泥泞的地形不利野战,便向高欢建议留下部分兵力在沙苑与宇文泰相持,然后另以精骑西袭长安。高欢急于寻找宇文泰军决战,没有同意他的意见。下令挥军前进,进入沼泽沙丘搜索宇文泰军。东魏军自恃兵多势众,深人沼泽地,而且毫无战斗队形。宇文泰等到东魏军进入伏击圈后,擂鼓出击。西魏军从左右两翼猛烈冲击东魏军,将其截为数段。东魏军遭到突然袭击,本来乱糟糟的队形更加乱成几团,在复杂而又陌生的地形中无法展开。东魏军穷于应战,互相践踏。西魏军趁热打铁,消灭东魏军6000余人,俘虏近8万。东魏军大败溃散,高欢逃至蒲津,渡河东撤。沙苑、渭曲之战以东魏的大败宣告结束。
本来一开始东魏军是据优势的,不过,西魏军懂得“半济而击之利”的道理,认真打探敌军情况,再分析双方利弊,采取积极而有利于自己的军事行动,最终化患为利,取得最后的胜利。