太平興國四年(979年),宋太宗趙光義召開廷議,商定討伐北漢的大計。雖然有不少人反對興兵,但在主帥曹彬的支持下宋廷通過了進伐北漢的決議。

遼景宗耶律賢緊急召見宋帝國駐遼大使,質問為何要無故侵略他的小弟弟北漢。宋使回答得非常爭氣:“河東地區的北漢國不順應天命,應該討伐,如果北方的遼帝國不支援他,則宋遼之間的和平協議依舊有效;不然,隻有開戰!”

最後一個割據勢力即將重新納入帝國的版圖,而更加強大的契丹帝國隻能焦急地籌措援軍,希望能夠盡力阻撓中原王朝的重新統一。

趙光義伐北漢,經濟上已經不用發愁。他把太祖所置的封樁庫改為內藏庫,表示說此舉非為“自供嗜好”,而是要儲積以備時缺。

在軍事上,他總結了前幾次宋軍進攻太原失利的原因,製定了肅清外圍、先阻遼援、後取太原的方略。然後加緊整訓軍隊,命鄰近北漢的晉、潞、邢、鎮、冀等州,修造兵器及攻城器具,轉運糧草,積極做攻取太原的準備。

二月,宋軍快速集結完畢,趙光義禦駕親征北漢。

不到一個月,宋軍掃平周邊州縣,包圍北漢國都太原城。契丹帝國援軍也如同預料那般出現了,遼帝國南府宰相耶律沙率六萬大軍來援,並以冀王耶律敵烈為監軍,南院大王耶律斜軫、樞密副使耶律抹隻分率前後軍開進。

按照趙光義在戰前製定的作戰方案,宋軍主力部隊圍住太原城,遣雲州觀察使郭進為石嶺關都部署,率萬餘精兵在白馬嶺大澗列陣阻擊援軍,屬於典型的圍城打援戰術。耶律沙率領前軍在澗北遙望郭進軍整裝以待,便停止行軍,準備等後軍到達後列陣出戰。但敵烈見郭進兵少,認為應該以前軍發起急攻,壓倒宋軍,再待後軍壓到,形成優勢梯隊攻擊,便可對宋軍實施毀滅性打擊。抹隻也附和敵烈的方案,耶律沙並不同意這樣冒險的作戰方案,但他雖為主將,卻拗不過監軍和副將兩人,苦勸不聽,隻好令前軍渡河先攻。好大喜功的敵烈率軍衝鋒在前,快速渡過大澗與郭進交鋒。

按理說敵烈的作戰方案並非完全沒有道理,如果實施順利可以使宋軍受到最大程度的打擊,然而這位契丹大王的方案卻有一個重要缺陷:他低估了宋軍的剛猛程度。

騎兵對戰宋軍重步兵方陣,最忌正麵衝擊,而應設法從側翼包抄,但敵烈顯然是求勝心切,以己之短擊彼之長。對方是嚴陣以待,預先占據了險要地勢,他的騎兵先鋒渡過大澗之後來不及包抄對方的側後翼就會先被對方包抄,一上岸就隻能從正麵衝擊郭進的步兵方陣,戰勝了還好說,戰敗了就沒有了後退的空間,極易被全殲。而郭進不愧為太祖朝名將,按照兵法“半渡而擊之”的戰術,隻待敵烈的前鋒甫一上岸,立刻指揮重步兵方陣上前抵住去路,使遼騎兵失去了衝突的空間,並親率精銳騎兵從側翼猛攻遼軍。遼軍進退不得,敵烈和他的兒子蛙哥(好名字)、耶律沙的兒子德裏、吐呂不部節度使都敏、黃皮室詳穩唐筈等大將均死於宋軍刀兵之下!

郭進以雷霆之勢打掉了遼軍前鋒,而抹隻的中軍和耶律沙的後衛正在渡澗,收不住隊形,全部上岸後被宋軍包圍!所幸耶律沙也是一位非常優秀的將領,他很快在戰場上就地收攏敗軍,重新整隊抵住郭進的猛攻,拖延了一下時間。此時,耶律斜軫聽說前軍大敗被圍,火速強行軍趕到。耶律斜軫的頭腦很清醒,他沒有盲目渡河去急救耶律沙,而是令部下隔著河列開箭陣對宋軍進行猛烈的射擊,耶律沙則在陣中配合耶律斜軫軍的火力開始突圍。耶律斜軫不愧為一代名將,他這個作戰方案無疑是遼軍處於敗勢時最合理的方案,遼軍在澗北列箭陣,宋軍絕不可能分兵渡河來襲,而箭陣的火力可以支援被困的遼軍突圍。宋軍經過激戰,已經比較疲勞,遼軍雖敗,但兵力畢竟占優。郭進見耶律沙、耶律斜軫都體現出極高的戰術指揮水平,而且已經取得極大的戰果,更重要的是監軍田欽祚此刻沒有及時率預備隊上前繼續攻擊遼軍,失去了擴大戰果的機會,耶律沙狼狽逃回北岸。郭進又趁勢攻破西龍門砦,契丹全軍敗退。

白馬嶺之戰是宋遼戰爭中宋軍取得的第一次大規模的勝利,可以說為以後對遼戰爭拔了個頭籌。

之後,北漢再次向遼告急,遼軍由於大敗,短時間內無力再出援兵。不久,趙光義至太原,慰勞諸將,並出手詔向北漢主劉繼元勸降。

至四月,宋軍陸續攻下太原外圍州縣,使太原成為一座孤城。宋軍也連續攻城,天武軍校荊嗣率眾登城,“手刃數人,足貫雙箭,手中炮,折碎二齒”,受到趙光義嘉獎,由此亦可見戰事之慘烈。趙光義又讓平時揀選的諸軍勇士舞劍為前導,這班武士平時訓練有素,劍法精湛,城上人“望之破膽”。

趙光義招法用盡,仍是無法攻下太原堅城。而這時,從石嶺關傳來了壞消息。剛剛對遼作戰立功的石嶺關都部署、大將郭進自縊而死!趙光義本命郭進守石嶺關,田欽祚護其軍。而田欽祚在石嶺關,“恣為奸利諸不法事”,趙光義察覺後,降其為睦州防禦使,仍護石嶺關屯兵。郭進與田欽祚不協,屢屢揭發他的醜事,田欽祚為此十分憎恨他,白馬嶺之戰時不援郭進,沒有進一步擴大戰果,平時又屢次淩辱他。郭進為人剛烈,戰功高,雖是大將,卻也奈何不了相當於“監軍”的田欽祚,被他數次淩辱之後想不開,終於自縊而死。而田欽祚報告趙光義說郭進是死於中風,趙光義也就沒有追究,追贈郭進為安國節度使。當時左右都知道是怎麽回事,就是沒人敢說。

五月初五,趙光義來到城南,督促諸將又發起猛攻,大有屠城之勢。此時北漢退休的樞密副使、左仆射馬峰臥病在家,見情勢危急,便讓人抬自己進宮,痛哭流涕勸劉繼元投降。當夜,劉繼元派通事舍人薛文寶送降書給趙光義。趙光義當即至城北,宴從臣於城台,受其降,並命薛文寶帶詔書給劉繼元,以示撫慰,許其延享富貴。北漢宣告滅亡。

趙光義深感晉陽自古為帝王龍興之地或割據政權對抗中央政權所在,傳為“龍脈”,而晉陽城地形險要,城高池深,易守難攻,百姓習於戎馬,人性勁悍,難以掌控,趙光義懼怕此地再出割據政權危害大宋政權,同時憤恨於晉陽城軍民的長期頑強抵抗,稱此地“盛則後服,衰則先叛”,遂以開封太原星宿不合為借口詔毀晉陽,遷城中士紳富戶於開封洛陽,火燒其城,城中老幼被燒死或逃跑時被踩踏致死者不計其數,並征集數萬人削晉陽北部的係舟山山頭,曰“拔龍角”,並下令決汾水、晉水衝灌晉陽城廢墟,禁止任何人在晉陽城廢墟居住,徹底將其摧毀。

宋遼兩大帝國第一次大規模正麵交鋒,就這樣以宋帝國的勝利而結束。宋軍陣斬遼帝國冀王敵烈等多名高級將領,將數萬遼軍精銳一戰擊潰。郭進將軍作為此役的勝者,無疑是具有標誌性意義的劃時代名將。而在此之前,契丹帝國橫掃大漠南北,所向披靡,無論是對草原遊牧部族還是中原五代政權,幾無敗績,此役遭到宋軍的慘痛打擊,也深刻認識到宋帝國的實力。經曆此戰,遼帝國一定會適當調整很多基本國策。此役中幾位將軍耶律沙、耶律斜軫和抹隻雖然大敗虧輸,但遼景宗賞罰分明,並未盲目責罰,而是嘉獎了他們在敗軍中體現出的優良素質,並逐步委以大任,日後均成長為宋遼戰爭中的中堅力量。