李元昊建国称帝后,于宋宝元二年十一月,率军攻向宋延州境内的保安军。进攻宋朝的前锋部队是李元昊招揽的原居住在宋朝边境的党项人,俗称“熟户”,这些人对宋军非常了解,摸清了宋军贪图享乐、懦弱骄横,认为只要吓唬下宋军就会崩溃。但在进攻保安军的过程中,宋军在一位面戴青铜面具的将领率领下,向西夏军队发起冲击,西夏前锋直接被打崩溃了,乱军直卷李元昊中军,党项人一路奔跑,直接跑出了保安军的防区。那位戴青铜面具的将军就是北宋名将-狄青。
初战失利,李元昊派出党项的三万本部人马,选择攻击宋朝的承平砦,承平砦要比宝安军大一些。党项人冲向砦门,但砦门放弃防守,出砦与党项人野战,承平砦外血肉横飞,出战的宋军只有1000余人,但党项人抵挡不住,选择了撤退,此后,三万党项人围攻了6天,承平砦依然没能攻下,李元昊突然撤军回到横山以北。承平砦的守将是仪州刺史、鄜延路兵马钤辖许怀德。
李元昊为什么会突然撤军呢?原来宋军已经攻入了西夏境内,西夏前沿军寨-后桥寨已经被宋军攻破,另外宋军的援军也不断向延州集结,为了安全,李元昊不得不撤军。
既然强攻没有效果,李元昊决定用计。当时鄜延路的最高军政长官名叫范雍,范老夫子为人迂腐,也就是这人很好骗。宋宝元三年初,西夏派使者到延州向范雍假装承认错误,要求和好。范雍相信了,本着宽宏大量的原则,原谅了李元昊,放松了警惕。当时有很多党项人越境向宋朝投降,范雍要求金明寨分散接收这些投降的党项人。金明寨有10万将士,是当时鄜延路最强的堡垒,守将是有“铁壁相公”之称的李士彬,按理说李士彬应该会拒绝,但结果呢李士彬居然同意了,原因不好猜测,也许李士彬觉得自己足够强大,看不起李元昊,没当一回事。
李元昊用计成功从土门向金明寨推进,在内奸的配合下,金明寨迅速陷落,李怀宝战死,李士彬被俘,鄜延路最强的堡垒就这样被攻破了。范雍接到消息,反应是先不信,觉得李元昊都要投降了,怎么可能会出尔反尔呢,直到党项大军到达延州城下,范老夫子直接吓哭了,此时的延州城中只有几百人,等同于一座空城。没办法了,范雍擦干眼泪后组织守城,同时下令军队向延州城集结。
当李元昊率军攻破金明寨,围攻延州城,刘平、石元孙两位将军率领近万人马已经到达土门,准备围堵李元昊后路。当接到延州告急的调令,两位将军不顾士卒疲劳,向延州挺进。面对种种困难,刘平对手下说:“义士赴人之急,蹈汤火犹平地,况国事乎。”于是这一万人的队伍冒着西北的风雪,日夜兼程赶往延州。
之后不分昼夜,全力行军,当刘平、石元孙的军队抵达三川口,天降大雪,刘平决定在这里休息一下,营址选在三川口以西10里。正在这时,他接到了范雍的第二封急报,命令他们不准休息,火速开拔,并且把部队化整为零,分批开进。当发现数批50队不见消息后,刘平发现自己上当了,刘平决定稳住剩余的骑兵,后撤20里,与步兵会合。同时碰到了同样接到调令的黄德和部、万俟政部以及郭遵部,总兵力达到1万人以上,大军结伴东行,到达三川口的五龙川,这个名不经传的滩头,从此名传青史。
在这里,宋军遇到了西夏的主力部队15万人,西夏人涉水过河发起进攻,勇将郭遵率本部抢先发起进攻,以郭遵为箭头,锲入西夏阵地,杀敌数百才后撤。郭遵单挑数名党项人勇士,并击杀。李元昊决定大军集群冲锋,以人数优势击败宋军,但宋军抢先进攻,“击却之、夺盾、杀获及溺水死者千余人”,击溃了党项人前阵,经过一整天的战斗,西夏人被迫逃回到河东岸,但宋军也付出了惨重的代价,刘平的脖子和耳朵都被箭射伤。
入夜,宋军非常疲惫,斗志在消退,西夏抓住时机,派出轻骑突击,宋军措手不及,被迫后退,黄德和却率军逃跑了,刘平之子刘宜孙拦阻不住,逃跑就像瘟疫一样,在宋军中波及,战局在一瞬间崩溃了。郭遵孤身奋战,直至战死,但他也为刘平收拢1000余人赢得了时间,宋军重新结阵,战斗依然没有结束。这1000余人宋军与西夏军队苦战3天,迫使西夏军后退。刘平、石元孙带着收拢的千余人趁着夜间向西南山区撤退,并垒起了多个防御土堡。第二日李元昊又带大军进攻,刘平率领千人面对数万大军又支撑了半日,最后全军覆没。但令人奇怪的是,李元昊没有继续攻击延州城,而是率军撤退了。