高梁河之战后,辽军曾数度越界南下。982年,辽景宗去世,辽军即停止南侵。双方处于休战状态。不过在此期间,宋太宗一直在准备二度北伐,以收复幽州,报仇雪耻。
986年,宋知雄州(今河北雄县)贺令图等上言,说辽主少国疑,母后专权,宠臣用事,国人怨疾,建议乘此机会,直取幽云。其实这时辽统治集团君臣协和,政治贤明,并不存在什么可乘之机。但赵光义却信以为真,不顾参知政事李至的反对,不顾粮草、军械缺乏、北伐准备不足、开战胜算不多的实际情况,不和宰相商量,即决定对辽用兵,兵分三路,大举北伐。
宋东路军以曹彬为主将,崔彦进为副将;另一支以米信为主将,杜彦圭为副将。共拥有十余万兵力,是北伐的主力。
全军由雄州直指幽州。
中路军以田重进为主将,由定州(今河北定县)进攻飞狐(今河北涞源)、蔚州(今河北蔚县)。西路军以潘美为主将,杨业为副将,出雁门(今山西代县),进攻云(今山西大同)、朔(今山西朔县)、寰(今山西朔县东马邑镇)、应(今山西应县)诸州。
宋太宗的战略是,东路军一面扬言进攻幽州,一面持重缓行,吸引辽军主力,使其无暇西顾。待中、西二路攻占山后诸州,东进与东路军会师,再合力攻取幽州。
辽军的战略部署是以南京留守耶律休哥部抵御宋东路军,以耶律斜轸部抗击宋中路和西路军,以勤德部守卫平州(今河北卢龙),保卫侧后方的安全。辽圣宗和萧太后则率战略预备队驻幽州。其战略是以偏师牵制宋中路、西路军,先以主力击破宋东路军,再逐一击退另二路宋军。
战事初起,宋中、西二路军进展顺利,势如破竹,连下飞狐、蔚、寰、朔、应、云诸州。东路军于三月初攻克固安、新城(今河北新城东南),并于十三日占领涿州。耶律休哥避免与宋军决战,仅以小部队骚扰宋军,阻断其粮道。曹彬至涿州,持重不前。十余日后,因粮草不继,退往雄州。
赵光义得报后认为大敌当前,回军就粮乃兵家所忌,立即下令东路军不得后退,亦不准再进,并命曹彬率部沿白沟与米信部会合,待中路、西路攻占山地之后,再会师北上。但曹彬所部诸将听到中、西二路连战皆捷的消息后,唯恐落他路之后,无不积极求战,力主北上。曹彬无法控制,只得再次率部北进。宋军沿途迭遭辽军阻击,且战且行。时值天气炎热,将士体力消耗颇大,抵达涿州时全军上下均已疲乏不堪。
这时,与曹彬正面抗衡的是耶律休哥部,萧太后、辽圣宗所率辽军已从幽州北郊进至涿州以东25公里的驼罗口,攻占固安。曹彬所率宋军粮草将尽,难以固守拒战,又面临辽军主力合击的威胁,向西南方向撤退。五月初三,辽军在岐沟关追上宋军,大败曹彬、米信军,并乘胜追至拒马河,宋军溺死无数。余众奔高阳,又受到辽军骑兵的冲击,死者达数万之众,遗弃的兵甲堆积如山。
辽在岐沟关一役后,即移兵西向,攻克飞狐和蔚、寰、应诸州。宋将杨业重伤被俘,不屈而死。山后诸州又落到辽的控制之下。
宋太宗第二次北伐失败的原因,仍然是昧于知彼和准备不足。辽在萧太后摄政时期,正处于国势强盛的阶段。宋太宗看不到这一切,不愿认真作好充分的战争准备,未能建立一支拥有众多骑兵的强大军队,并依靠这支军队去摧毁辽军的主力,而只想凭侥幸取胜,以步兵对抗骑兵,其结果就只能以失败而告终。他的分进合击的战略虽然可行,但选择曹彬这样缺乏足够军事才能的庸将来实施这一战略,又没有强大的战略预备队的支持,他的失败乃是必然的。
辽军取胜的主要原因是内部协和,兵强马壮,指挥正确,能在宋军合击的态势形成前集中兵力,把握战机,在平原开阔地带利用己方的骑兵优袭,攻击战斗力已大大削弱的宋军,并敢于勇猛追击,以扩大战果。
辽军在再次挫败宋军的进攻后,又一次转而采取攻势。
999年,辽军大举南下,前锋抵达邢(今河北邢台)、洺(今河北永年东南)、淄(今山东淄博南)、齐(今山东济南)一线。史上著名的澶州之役已经不远了。