太平兴国四年(979年),宋太宗赵光义召开廷议,商定讨伐北汉的大计。虽然有不少人反对兴兵,但在主帅曹彬的支持下宋廷通过了进伐北汉的决议。
辽景宗耶律贤紧急召见宋帝国驻辽大使,质问为何要无故侵略他的小弟弟北汉。宋使回答得非常争气:“河东地区的北汉国不顺应天命,应该讨伐,如果北方的辽帝国不支援他,则宋辽之间的和平协议依旧有效;不然,只有开战!”
最后一个割据势力即将重新纳入帝国的版图,而更加强大的契丹帝国只能焦急地筹措援军,希望能够尽力阻挠中原王朝的重新统一。
赵光义伐北汉,经济上已经不用发愁。他把太祖所置的封桩库改为内藏库,表示说此举非为“自供嗜好”,而是要储积以备时缺。
在军事上,他总结了前几次宋军进攻太原失利的原因,制定了肃清外围、先阻辽援、后取太原的方略。然后加紧整训军队,命邻近北汉的晋、潞、邢、镇、冀等州,修造兵器及攻城器具,转运粮草,积极做攻取太原的准备。
二月,宋军快速集结完毕,赵光义御驾亲征北汉。
不到一个月,宋军扫平周边州县,包围北汉国都太原城。契丹帝国援军也如同预料那般出现了,辽帝国南府宰相耶律沙率六万大军来援,并以冀王耶律敌烈为监军,南院大王耶律斜轸、枢密副使耶律抹只分率前后军开进。
按照赵光义在战前制定的作战方案,宋军主力部队围住太原城,遣云州观察使郭进为石岭关都部署,率万余精兵在白马岭大涧列阵阻击援军,属于典型的围城打援战术。耶律沙率领前军在涧北遥望郭进军整装以待,便停止行军,准备等后军到达后列阵出战。但敌烈见郭进兵少,认为应该以前军发起急攻,压倒宋军,再待后军压到,形成优势梯队攻击,便可对宋军实施毁灭性打击。抹只也附和敌烈的方案,耶律沙并不同意这样冒险的作战方案,但他虽为主将,却拗不过监军和副将两人,苦劝不听,只好令前军渡河先攻。好大喜功的敌烈率军冲锋在前,快速渡过大涧与郭进交锋。
按理说敌烈的作战方案并非完全没有道理,如果实施顺利可以使宋军受到最大程度的打击,然而这位契丹大王的方案却有一个重要缺陷:他低估了宋军的刚猛程度。
骑兵对战宋军重步兵方阵,最忌正面冲击,而应设法从侧翼包抄,但敌烈显然是求胜心切,以己之短击彼之长。对方是严阵以待,预先占据了险要地势,他的骑兵先锋渡过大涧之后来不及包抄对方的侧后翼就会先被对方包抄,一上岸就只能从正面冲击郭进的步兵方阵,战胜了还好说,战败了就没有了后退的空间,极易被全歼。而郭进不愧为太祖朝名将,按照兵法“半渡而击之”的战术,只待敌烈的前锋甫一上岸,立刻指挥重步兵方阵上前抵住去路,使辽骑兵失去了冲突的空间,并亲率精锐骑兵从侧翼猛攻辽军。辽军进退不得,敌烈和他的儿子蛙哥(好名字)、耶律沙的儿子德里、吐吕不部节度使都敏、黄皮室详稳唐筈等大将均死于宋军刀兵之下!
郭进以雷霆之势打掉了辽军前锋,而抹只的中军和耶律沙的后卫正在渡涧,收不住队形,全部上岸后被宋军包围!所幸耶律沙也是一位非常优秀的将领,他很快在战场上就地收拢败军,重新整队抵住郭进的猛攻,拖延了一下时间。此时,耶律斜轸听说前军大败被围,火速强行军赶到。耶律斜轸的头脑很清醒,他没有盲目渡河去急救耶律沙,而是令部下隔着河列开箭阵对宋军进行猛烈的射击,耶律沙则在阵中配合耶律斜轸军的火力开始突围。耶律斜轸不愧为一代名将,他这个作战方案无疑是辽军处于败势时最合理的方案,辽军在涧北列箭阵,宋军绝不可能分兵渡河来袭,而箭阵的火力可以支援被困的辽军突围。宋军经过激战,已经比较疲劳,辽军虽败,但兵力毕竟占优。郭进见耶律沙、耶律斜轸都体现出极高的战术指挥水平,而且已经取得极大的战果,更重要的是监军田钦祚此刻没有及时率预备队上前继续攻击辽军,失去了扩大战果的机会,耶律沙狼狈逃回北岸。郭进又趁势攻破西龙门砦,契丹全军败退。
白马岭之战是宋辽战争中宋军取得的第一次大规模的胜利,可以说为以后对辽战争拔了个头筹。
之后,北汉再次向辽告急,辽军由于大败,短时间内无力再出援兵。不久,赵光义至太原,慰劳诸将,并出手诏向北汉主刘继元劝降。
至四月,宋军陆续攻下太原外围州县,使太原成为一座孤城。宋军也连续攻城,天武军校荆嗣率众登城,“手刃数人,足贯双箭,手中炮,折碎二齿”,受到赵光义嘉奖,由此亦可见战事之惨烈。赵光义又让平时拣选的诸军勇士舞剑为前导,这班武士平时训练有素,剑法精湛,城上人“望之破胆”。
赵光义招法用尽,仍是无法攻下太原坚城。而这时,从石岭关传来了坏消息。刚刚对辽作战立功的石岭关都部署、大将郭进自缢而死!赵光义本命郭进守石岭关,田钦祚护其军。而田钦祚在石岭关,“恣为奸利诸不法事”,赵光义察觉后,降其为睦州防御使,仍护石岭关屯兵。郭进与田钦祚不协,屡屡揭发他的丑事,田钦祚为此十分憎恨他,白马岭之战时不援郭进,没有进一步扩大战果,平时又屡次凌辱他。郭进为人刚烈,战功高,虽是大将,却也奈何不了相当于“监军”的田钦祚,被他数次凌辱之后想不开,终于自缢而死。而田钦祚报告赵光义说郭进是死于中风,赵光义也就没有追究,追赠郭进为安国节度使。当时左右都知道是怎么回事,就是没人敢说。
五月初五,赵光义来到城南,督促诸将又发起猛攻,大有屠城之势。此时北汉退休的枢密副使、左仆射马峰卧病在家,见情势危急,便让人抬自己进宫,痛哭流涕劝刘继元投降。当夜,刘继元派通事舍人薛文宝送降书给赵光义。赵光义当即至城北,宴从臣于城台,受其降,并命薛文宝带诏书给刘继元,以示抚慰,许其延享富贵。北汉宣告灭亡。
赵光义深感晋阳自古为帝王龙兴之地或割据政权对抗中央政权所在,传为“龙脉”,而晋阳城地形险要,城高池深,易守难攻,百姓习于戎马,人性劲悍,难以掌控,赵光义惧怕此地再出割据政权危害大宋政权,同时愤恨于晋阳城军民的长期顽强抵抗,称此地“盛则后服,衰则先叛”,遂以开封太原星宿不合为借口诏毁晋阳,迁城中士绅富户于开封洛阳,火烧其城,城中老幼被烧死或逃跑时被踩踏致死者不计其数,并征集数万人削晋阳北部的系舟山山头,曰“拔龙角”,并下令决汾水、晋水冲灌晋阳城废墟,禁止任何人在晋阳城废墟居住,彻底将其摧毁。
宋辽两大帝国第一次大规模正面交锋,就这样以宋帝国的胜利而结束。宋军阵斩辽帝国冀王敌烈等多名高级将领,将数万辽军精锐一战击溃。郭进将军作为此役的胜者,无疑是具有标志性意义的划时代名将。而在此之前,契丹帝国横扫大漠南北,所向披靡,无论是对草原游牧部族还是中原五代政权,几无败绩,此役遭到宋军的惨痛打击,也深刻认识到宋帝国的实力。经历此战,辽帝国一定会适当调整很多基本国策。此役中几位将军耶律沙、耶律斜轸和抹只虽然大败亏输,但辽景宗赏罚分明,并未盲目责罚,而是嘉奖了他们在败军中体现出的优良素质,并逐步委以大任,日后均成长为宋辽战争中的中坚力量。