好水川之战夏军大胜,但损失也很惨重,经过近半年的休整,庆历元年七月,元昊又集结大军出击。夏军先宣称要进攻关中,实则主攻麟、府,但被高琼之子、知并州高继宣识破,先通知麟府军戒备,又带兵在麟州城下夹击夏军,元昊大败而走。元昊又继续猛攻麟府地区的其他州砦,均未能取得实质性战果,而范仲淹坚持稳妥的堡垒推进战术,用城堡控制了许多咽喉要地。随着宋军进攻前沿的缓慢推进,局势开始对西夏越来越不利。虽然元昊与兴平公主一向不和,但这时却想到请小舅子辽兴宗出面。辽帝国也明白保持西夏在宋帝国西北的压力非常重要,于是诏令南京留守司和西南面招讨司集结大量部队,号称要出兵,并遣使重提关南十县的领土问题。宋廷遣枢密直学士富弼为使,反复交涉后宋帝国坚持寸土不让,最后把岁币从30万增加到50万了事。恰逢此时,三司(即户部、盐铁、度支,是分管财经工作的部门)向朝廷提交了增置酒税以弥补陕西军费的议案,引起御史台、谏院一片哗然,争论许久才勉强通过。这半年时间给了元昊宝贵的喘息之机,不过等宋帝国解决掉这些麻烦后,元昊还是必须取得一场胜利才能保护自己。
闰九月,元昊召集夏军总参谋部制订方案,张元提出宋军精锐现在都集中在边境,关中空虚,不如直接攻打渭州,宋军必救,则可设伏将救兵歼灭。元昊集结十余万大军分东西两路,从刘璠堡和彭阳城合围镇戎军,泾原路都部署王沿遣泾原路招讨经略安抚副使葛怀敏率万余兵救援镇戎军。葛怀敏是大将葛霸之子,范仲淹曾派他深入敌境,袭击夏州冶铁务,完满完成任务,后来提拔为高级军官,每次参谋本部制定作战方案时都显示出极高军事才华,宋仁宗曾赐其穿名将曹玮的战甲,将其视为能够接替曹玮在宋军中精神地位的希望之星。唯有范仲淹认为他是小聪明,不宜为大将。果然,这种成长在顺境中的天才儿童表现出了性格中的缺陷,葛怀敏到达镇戎军以南的瓦亭砦,会合知镇戎军曹英等部,继续向西进发。这时王沿送信来再次强调千万不能轻敌冒进,要背城列阵,以弱兵诱敌深入。但葛怀敏不听,继续向西,主动寻找夏军主力决战,其进军甚急,一度只带百余骑走在军前。走马承直赵政实在看不下去,提醒他离敌军已经很近,身为主将应该持重,葛怀敏才略有收敛。
行军三日后,侦骑捕捉到夏军主力在镇戎军和刘璠堡之间的定川砦附近。葛怀敏提出天明立即出击,泾原都监赵珣则提出:“现在敌军以数倍之众远道而来,锐气正盛,我军应固守镇戎军,以利粮饷,再出奇兵断其归路,待敌军锐气衰竭再出兵掩杀,否则必遭屠戮!”但此时葛怀敏立功心切,坚持主动出击,并制定了四路出击的方案:延边都巡检使刘湛、向进出西水口,泾原路都监赵珣出莲华堡,知镇戎军曹英、都监李知和出刘璠堡,葛怀敏自领军出定西堡。夏军本就人数占优,宋军分兵后更处劣势。元昊快速击退前锋刘湛部,又分别立营栅切断宋军各部的归路,葛怀敏只好令各部入据定川砦。然而这正中元昊下怀,因为他的目的本来就不是攻城,而是歼灭宋军有生力量。他出动十万大军将这万余宋军团团围困,断绝归路又阻断上流水源,准备困死宋军。葛怀敏率兵出城列阵,环庆都监刘贺先率数千蕃兵出战,失利后蕃兵竟四散而逃。葛怀敏、曹英又结阵御敌,元昊亲率精锐冲击大阵,葛怀敏倒还不赖,中军巍然不动,元昊又转而攻击东偏阵的曹英。本来曹英可以抵御,不料突然黑风大作,东偏阵溃败,继而全阵溃败。
宋军一片混乱,相拥入城,差点把葛怀敏挤死。元昊大兵围城,派人在城下对葛怀敏喊道:“你不是部署厅上点阵图的吗?你晓畅军事,但现在入我围困,还想往哪儿跑?”葛怀敏召集众将商议,决定突围回镇戎军,赵珣提出现在出城必遭伏击,应该坚守以待援军,葛怀敏又不听。次日宋军分前后军呼应出城,结果前军刚出城2里就发现路已经断了,被夏军包围,葛怀敏、曹英、李知和等四十余将校和数千士兵战死,赵珣被俘。而留在定川砦中尚未来得及出城的九千余宋军连同600匹战马都做了俘虏。趁此大胜,元昊又挥军直抵渭州城下,在周边大肆劫掠。知原州景泰率5000骑来援,元昊又使出佯败诱敌的战术,但景泰没有冒进,而是搜出伏兵杀之,元昊遂大败而去。事实上在葛怀敏于定川砦被围后不久,韩琦、范仲淹、庞籍、狄青等大将纷纷率兵出援,仁宗刚开始还说有范仲淹出兵,定川之围不足为虑。谁知不等援军到,葛怀敏已经全军覆没,震惊朝野。所幸范仲淹等路纷纷击败夏军,元昊虽然一度临近渭州,但还是全军撤回。战后廷议,虽然葛怀敏应该对战败负主要责任,但念及其以身殉国,仍然追赠为太尉、镇西军节度使,优待家属,曹英等俱有追赠。王沿因误用葛怀敏,降知虢州。