熙河、鄜延两路军连战皆克,高遵裕的环庆、泾原两路也开入夏境。原州就在灵州正南方不远,一直是夏军重点防御的方向。环庆、泾原本应同时出兵,但由于高遵裕迟迟不到,刘昌祚及其副使姚麟率泾原军五万余人沿葫芦川(黄河支流清水河)先期出发。梁乙埋亲率10万夏军精锐扼守磨脐隘(在今宁夏同心境内、清水河边)险要地势,宋军诸将认为无法攻取,应该向东去韦州(今同心县韦州镇)与环庆军会合。刘昌祚慷慨陈词:“遇贼不击,这是自保,是没有军纪!而且客场作战,必须速战速决,各位现在离开就能自保吗?”于是召开参谋本部会议,制定了盾牌兵在前,神臂弓次之,弩兵再次,骑兵跟进,强渡葫芦河夺取隘口的方案,并宣布此战的奖金提高三倍。宋军欢声雷动,响彻山谷,夏军听到不知所措。刘昌祚之父刘贺在定川之役中牺牲,他被录为官,以勇猛善战累官至西上合门使,此次被任命为泾原路主将,身先士卒,手执两盾先登,宋军士气大振。但西夏国相梁乙埋也亲临一线,冒枪顶矢,率夏军苦战。
激战了整整一个下午,宋军神臂弓的火力实在太猛,夏军渐渐不支,刘昌祚趁机令郭成率选锋骑兵挂着响环从后阵冲出,夏军听到宋骑响声大作,终于崩溃。梁乙埋督亲军再战,又败,宋军追杀二十余里,斩获大首领鲊啰卧沙、监军使梁格嵬等15级,小首领219级,生擒梁乙埋之侄吃多理等亲将22人,斩首2460级,获铜印1枚。攻取磨脐隘后,泾原军继续进发至赏移口,有两条路可通灵州:一条径直向北通过黛黛岭,一条往西北绕一点儿路到鸣沙州(今宁夏同心)。诸将认为应该走黛黛岭,但刘昌祚得到谍报称鸣沙州的西夏“御仓”储备了大量物资。宋军攻取鸣沙州后果然掘到御仓,获得粮食百万石。泾原军满载物资来到灵州城下,夏军还在黛黛岭等他,未料会出现在灵州城下,城门不及关闭,郭成率选锋军急趋,守军不及拒,被斩首450级。然而正当泾原军大队准备攻入时,却传来高遵裕的军令,让刘昌祚立即停止进攻。高遵裕的环庆军动作最慢,十月十三日才从环州洪德砦出发。等到他出兵,韦州监军司的夏军都逃走了,高遵裕入韦州城,命好好招抚百姓。
知环州张守约认为夏军现在四处御敌,灵州必然守备不足,可遣轻兵携十日口粮奇袭,可惜高遵裕没有采纳。及至西夏各路兵败,全线收缩,放弃外线,集中兵力防御灵州,奇袭的机会转瞬即逝。但高遵裕带兵直接穿越了旱海(环州到灵州之间的沙漠),也算出其不意,没有遇到抵抗就抵达灵州城下。高遵裕本身就是骄狂自大之人,而在出兵前神宗表示过不喜欢迂阔的刘昌祚,并授权高遵裕可以撤免刘昌祚的军权,所以高遵裕非常轻视刘昌祚。在他进军途中,听说刘昌祚已经攻破灵州,慌忙奏称是他派刘昌祚进兵攻克了灵州,上奏后才知道是误传,大大丢了脸面,心中更加嫉恨刘昌祚。环庆军抵达灵州后,刘昌祚来见高遵裕,高遵裕故意怠慢,刘昌祚隐忍不发。高遵裕问灵州如何,刘昌祚说:“差一点儿就打下来了,因为您的军令停止进攻。”又说,“现在灵州是孤城,两军会合后十余万众,加上民兵有三十余万,全力围攻,不日可下。”但高遵裕不愿刘昌祚分功,让他带兵巡营,号称自己带一万兵垒个土山就可以攻克,还下令刘昌祚交权给姚麟,但姚麟没有接受。
由于两军不合,而夏军已经被逼到悬崖边,无不奋力死守,灵州又确实是表里山河的坚城,环庆军连续攻城18日不克。18日中不断有援军赶到,刘昌祚将他们一一击退。其中一次西夏名将仁多菱丁率数万兵来援,一名白马将军策马突前,刘昌祚大喊:“谁能杀他!?”郭成率选锋营冲出,立即将其斩于马下!宋军争相发射神臂弓,刘昌祚也亲自出阵发弩,命中仁多菱丁手臂,败退而去。刘昌祚把战利品分了一部分给环庆军,想调解与高遵裕的关系,但高遵裕异常傲慢的拿钱来买战利品,泾原军一片哗然,几欲兵变,被刘昌祚制止。战争继续拖延,环庆军粮草已尽,刘昌祚又命从鸣沙州取出粮草供应环庆军,但高遵裕还是不领情。他命刘昌祚砍伐树木制造攻城器具,结果能找到的树木都很细小,无法制作器具。高遵裕大怒,要斩刘昌祚,众人苦劝得免。刘昌祚在军前忧愤成疾,范仲淹之子范纯粹当时任转运判官,力劝高遵裕前往探视,终于改善了一点儿关系,但攻城始终没有进展。
高遵裕急切之下,甚至对着城上喊道:“你们怎么还不投降!”西夏人肯定觉得他有病,答道:“你又打不下来,我们为什么要投降?”这时西夏收缩防御的策略取得成效,深入大漠的宋军后勤部队纷纷遭到袭击,而战兵进攻也无法缴获物资。李宪的熙河军在取得不错战绩后已经停止进军,种谔的鄜延军进抵盐州(今宁夏盐池)后遇到大雪,冻饿而死的士卒数万,被迫撤回,现在只剩下环庆、泾原两路军还在围攻灵州。虽然缴获“御仓”后军粮不缺,但进入冬季,三十余万宋军却没有御寒的衣物和薪炭,甚至烧弓箭和旗杆取暖。夏军在黄河上游修筑了7级大堤蓄水,此时仁多菱丁决堤放水,河水奔涌进入宋军营寨。宋军筑堰挡水,但在寒冬的塞北,这么多水是挡不住的。泾原钤辖种诊向高遵裕进言现在已不可能攻克灵州,再不走就要全部冻死。按宋军纪律,无诏班师要被诛族,但此时高遵裕还是体现了大将风度,道:“以我一人换取两路生灵,还是值得。”于是宋军开始撤离灵州,之前很多干枯的河流现在都充满水,高遵裕下令将炮具砍断做桥梁。夏军趁机追杀,却见刘昌祚手提长剑,坐在水上,指挥泾原军抵挡追兵,苦战数日保护其余部队撤到韦州。
但在进入韦州营寨时宋军还是秩序大乱,被夏军抓住机会痛击,死伤无数。各路宋军接到灵州败报后纷纷撤离,除李宪一路有秩序地安全撤回兰州,其余各路都是后勤不继败退的,损失非常大。尤其是王中正的河东军军纪全无,十余万人拥塞在延州城下,一度形势非常危险。按理说这些都是逃兵当斩,而且现在作乱的危险很大,有人提议用督战的河东十二将把他们全部屠杀。但是沈括非常妥善的处理了这件事情,首先将率先带队逃离的种谔部将左班殿直刘归仁处斩,并宣谕全军:士卒们都是千里迢迢为国效忠,理应受到抚恤。
士卒们无不感激,在他的指挥下很有秩序地撤回关内。之后沈括又遣大将曲珍率军出塞,声东击西,击退西夏追兵,不愧为最伟大的科学家。宋神宗懊悔地对孙固说:“如果当初听你的,不会有今天的大败。”辽帝国也遣使责备宋帝国侵略西夏的举动。高遵裕、刘昌祚、王中正、种谔被贬官处理,李宪则因战功被升官,董毡进封为武威郡王,除了刘昌祚有点冤枉外,功过还算比较分明。五路伐夏虽功亏一篑,但百万宋军深入沙漠,表现非常英勇,攻占了兰、银、夏、宥等西夏重镇,尤其是占据了西夏境内经济最发达的米脂地区,更击溃夏军精锐不可胜数,兵临灵州城下,最后因为后勤问题不败而退,着实令人扼腕。