太平興國五年(980年)三月,遼大軍攻雁門(今山西代縣)。宋將楊業偕潘美南北夾擊,再敗遼軍。
是年冬,遼景宗親率大軍進攻瓦橋關(今河北雄縣)獲勝。宋遂以南易水為障,設防禦遼。
太平興國七年(982年)四月至五月,遼軍三路出兵,攻滿城、雁門、府州(今陝西府穀),皆被宋軍擊敗。
後遼景宗病卒,聖宗耶律隆緒繼位,暫時無暇南顧;宋則致力於休兵養馬,廣積軍儲,以圖再舉。
雍熙三年(986年),宋太宗納知雄州賀令圖建議,以遼帝年幼、承天太後蕭綽攝政、內部不穩為可乘之機,決心分兵三路出擊:東路以曹彬為主帥,率主力軍10萬人出雄州(今河北雄縣);中路以田重進率軍出飛狐(今河北淶源);西路令潘美、楊業等率軍出雁門。企圖三路齊發,以東路牽製遼軍主力,待中、西路奪取山後諸州後,轉兵東向,三路合圍幽州。
其實這時遼統治集團君臣協和,政治賢明,並不存在什麼可乘之機。但趙光義卻信以為真,不顧參知政事李至的反對,不顧糧草、軍械缺乏、北伐準備不足、開戰勝算不多的實際情況,不和宰相商量,即決定對遼用兵,兵分三路大舉北伐。
及戰,西路軍連克寰(治寰清,今山西朔縣東北馬邑)、朔及應(治金城,今山西應縣)、雲(治雲中,今山西大同)諸州;中路軍克飛狐、靈丘(今屬山西)、蔚州(治靈仙,今河北蔚縣);東路軍奪占固安(今屬河北),進據涿州。
麵對宋軍大舉進攻,遼蕭太後親臨幽州,偕聖宗指揮抗擊。采取集中兵力先敗東路宋軍主力,再及其他各路的方略,乘曹彬孤軍冒進、又缺糧草之機,襲擾疲憊,迫其退軍,並追至岐溝關(今河北涿州西南),將其擊潰。繼而遣都統耶律斜軫率軍10萬,對中、西路宋軍相繼反擊,收複蔚州、飛狐、寰州、朔州等地,宋軍放棄雲、應,撤回代州,對遼的戰略進攻就此失敗。
宋朝消滅北漢後接連兩次伐遼失敗,宋軍精銳損失殆儘,致使宋朝統治集團中的一部分人產生了嚴重的恐遼情緒,從此談遼色變,再也不敢輕言收複幽雲十六州,並被迫由進攻轉為防禦。
為此,宋朝在河北沿邊的平原上,西起保州(今河北保定)西北,東至泥沽海口,利用河渠塘泊,築堤儲水,並設置堡寨,往來巡警,以防遼國騎兵奔衝。
對於遼軍的入侵,宋朝實行消極防禦,“但令堅壁清野,不許出兵,繼不得已出兵,隻許披城布陣,又臨陣不許相殺”。這就束縛了宋軍手腳,置宋軍於被動挨打境地。
而遼軍開始占據優勢和主動地位,不斷向宋發起進攻。從這時的遼朝來看,蕭太後治理內政,勵精圖治,國內逐漸穩定下來,奠定了發動戰爭的基礎。
宋雍熙三年(986)十一月,遼軍乘勝南下。耶律休哥率軍在望都(今屬河北)擊敗宋軍,進屯滹沱河北。遼軍數萬渡河進攻瀛州(今河北河間),與宋軍劉廷讓部在君子館(今河間北)展開激戰,宋軍大敗,死傷數萬。