宋元丰四年(1081年),五路宋军分进合击,欲一举荡平西夏。其中,熙河路李宪率先奏捷,一举拿下兰州,为日后深入河西立下支点。消息传至兴庆府,西夏大梁太后急令诸监司分兵迎敌,委大帅梁永能总领各路,抵御宋军。
梁永能将兵力分为三路:一路正面迎战;一路在旁设伏;一路等待宋军营垒尚未稳固时,伺机突袭。又在通道上挖掘壕沟、截断山谷,设置险阻,防守十分严密。待到宋军屡次更改出师日期,梁永能屯兵防御,长期未能一战,便派人投递侮辱性的战书到鄜延路边境,以激怒宋军。鄜延经略副使种谔于是率领本部及京畿内七将的兵力,共计九万三千人,从绥德路出击,进攻米脂。
起初,宋军兵围米脂寨,夏军以十万之众前来支援。宋军前锋将领高永能,对其从弟高永亨说:“夏军虽众,因其突然到来,这更便于我军从中取利。我军营正处在无定川的川口,右边有山,左边是水,应当在川口设阵。待夏军来到时,我选派精骑,大张右翼之兵,夏军可立即被击破。”高永亨同意这个意见。这天早晨天刚亮,大雾迷蒙,充塞四野。
果然,西夏军大批到来,与宋前军展开战斗。大战很久,宋突发奇兵,从侧翼展开进攻。夏军立即溃败,退至无定河自相践踏,河水为之不流。宋军乘机猛攻,从寅时杀到辰时,斩首数千级,掠获马三千,橐驼、牛羊以万计,器械铠甲不可胜数。然而,西夏米脂城寨,仍攻取不下。高永能秘密派出间谍,埋伏于西夏都统府,劝说守米脂寨东壁的守将投降,给他穿上华丽的锦袍,引导他在城下巡视,令介讹遇见状便出城投降,并献上乐工四十二人,种谔将他们押送至京城。宋军继而进军包围石州,守将丢弃历年积累的公文档案、簿册文书及军械器具,率众逃走。
种谔拿下米脂城,西夏枢密使都按官麻与首领女吃哆等七人,在米脂之战中被种谔俘虏。种谔因他们熟悉兴州、灵州的道路及粮窖所在,并知晓十二监军司的兵力数目,便让他们补任三班借职,与蕃官刘良保、麻乜讹赏一同担任军前向导。宋军抵达夏州时,夏州知州索九思已逃走。种谔入城,停留一夜,率兵直奔银州。他派官麻等人以利害关系劝降银州守将,守将投降。又派部将曲珍领兵打通黑水、安定等堡的通道,西夏兵前来抵御,战败。宋军在蒲桃山反身再战,又败,于是各路西夏军都收兵退保。
西夏梁永能军从米脂败退后,得知德靖寨的弓箭手全部随种谔从东路出境作战,于是秘密派兵从西路进犯德靖寨,被延州知州沈括率兵将其击退。
河东这一路由于内侍王中正指挥,他本人不懂军事,出兵前,转运官庄公岳提醒应随军多携带军粮,但他却不以为然,认为受自己节制的鄜延军自会满足自己的粮饷需要,故命令只需“备半月粮即可”,但庄公岳还是多准备了八天军粮。王中正率河东兵六万出麟州,宣称“臣中正代皇帝亲征”,才行数里,即上奏“已人夏境”,屯兵白草平九日,始渡无定河,循水北行,多为沙湿之地,故士马多遭陷没。
王中正因无作战经验,为免遭夏军袭击,故晚上禁止驴鸣,以防夏兵发现其宿营地,发动偷袭;又强令军中二更天即要熄火,使得行军后到的士卒往往吃半生不熟的饭,由此士卒病倒者甚多。当时河东军跟随种谔部逼近夏州,但因种谔获准不受王中正节制,使河东军失去了军粮补给,缺粮问题顿时显现。
而且鄜延军在前,虏获甚多,而河东军在后,几无所获,故士卒怨恨不已:“出征二十日,仅获三十人,何以复命!”甚至有流言要杀死王中正、庄公岳。王中正不得已,率军直奔宥州(今内蒙古鄂托克前旗东南)。夏宥州守将弃城而走,城中仅留五百余家,王中正尽杀城中居民报功。夏兵千骑屯城西左村泽保守窖藏粟米,王中正遣将击败守兵,尽得窖藏,缺粮危机暂得缓解。
大梁太后和梁乙埋得知兰州失守,命令民众将各路粮窖中的粮食全部运走,全军集结至高处川谷及石峡,占据险要以待宋军。待李宪兵至,西夏军迎战而败。李宪军攻取屈吴山,在打罗城川侧扎营。当地酋豪禹藏郢成四率旺家族大首领六人及蕃部部众,连同他们的母亲、妻子、男丁共三十余人,各自携带铜印和委任状前来请降。
李宪命郢成四随军前行,从天都山直趋南牟城。南牟是西夏国主游幸之地,内建七座宫殿,极为壮丽,府库、官舍一应俱全。李宪入城后,将其全部烧毁。首领嵬名、统军仁多夌丁率众来争夺,损失甚多。
西夏军屡战屡败,残余士卒沿路聚集,抢掠杀害行人,道路阻断。梁氏命万骑招集溃散士兵,合围宋鄜延路顺宁寨。宋军准备闭门入城自保,沈括认为示弱骄敌并非良策,便命前锋将李达率三千人出城,并备足十万人的食粮;又命骑将焦思在绥德城耀兵扬威,宣称大军即将到来。西夏军畏惧而撤退。于是浮图城及吴堡等寨的守军都弃营四散而去。
宋五路伐夏,可谓旌旗所指,多获捷报:米脂、银州、夏州、宥州、兰州相继克复,无定河一役更是斩获之丰震动西北。此刻的宋军,正如一把锋刃已入敌腹、却尚未察觉身后绳索渐收的利剑。大军暴露于茫茫荒漠之中,五路之间缺乏呼应,粮道脆弱如丝,而一张血盆大口正朝着宋军逼近西夏


