雍熙北伐改变了高梁河之战的部署,分三路伐辽:以天平军节度使曹彬为幽州道行营前军马步水陆都部署,河阳三城节度使崔彦进副之;以侍卫马军都指挥使、彰化军节度使米信为西北道都部署,沙州观察使杜彦圭副之,两军会出雄州;以侍卫步军都指挥使、静难军节度使田重进为定州路都部署,西上閤门使袁继忠为都监,出飞狐(今河北涞源);以检校太师、忠武军节度使潘美为云、应、朔等州都部署,云州观察使杨业副之,西上閤门使王侁为都监,出雁门关;另派海军从界河口(今河北永年附近)出航,跨渤海湾,在辽帝国平州(今河北卢龙)登陆,从后方助攻。出征前,宋太宗主持总参谋会议制定作战方案:以曹彬一路十万大军主攻幽州(因兵力庞大,分为曹彬、米信两路),辽军必然集结主力防御此路。曹彬定要持重缓行,不贪图小利,牵制住辽军主力,另两路则趁机攻取其余州县,最后三路大军会攻幽州。而李继隆、薛继昭、范廷召等强将均被配置在曹彬一路军,这个方案应该说是很合理的。
其实在高梁河之战后,太宗就一直念念不忘整兵再战,但屡次三番被朝议否决。雍熙三年(辽统和四年,公元986年),知雄州贺令图、其父岳州刺史贺怀浦、文思使薛继昭相继上疏,指出辽帝国幼主当立,母后专权,尤其是韩德让权炎炙天,多有人不服,此刻正是攻打辽国的大好时机。刑部尚书宋琪本是辽进士,做过幽州节度使从事,非常熟悉幽燕的情况,他从各方面详细介绍了伐辽事宜,深得太宗赞许。于是太宗又诏廷议伐辽,参知政事李至进言反对,被罢为礼部侍郎,最后宋廷终于通过了再伐幽云的决议,史称雍熙北伐。
辽帝国南京地区驻军不足以抵御如此大规模的入侵,耶律休哥急奏请援。辽廷认识到这是一次更大规模的战略入侵,急调南院、北院、奚、乙室、渤海诸军前往救援。宣徽北院使耶律阿没里为南征都统,率先驰援南京;北院枢密使耶律斜轸为山西道兵马都统,救援山后;彰德军节度使萧挞凛从上京远道驰援,较晚才赶到。东京留守耶律抹只率大军继行,林牙萧勤德率军在辽东半岛迁海,防御宋海军登陆;西南面招讨使韩德威暂弃对西部宋、夏、回鹘等诸国的防务,来援幽州;辽圣宗、萧太后驻兵驼罗口,统一指挥部署。随后他们还派出了皇帝的近身卫戍部队:皮室军、皇帝和太后的直属部队--翰鲁朵军陆续参与到各路救援战斗中。辽帝国这一次的全国动员,比仓促应战的高梁河战役更加完善。
辽圣宗初继位时,由于幼主新立,又连吃败仗,所以辽帝国非常明智的对宋采取了守势。而宋帝国西北边陲突然事发,党项酋长李继迁叛乱,于是暂允求和。利用这段和平时期,辽帝国在汉相韩德让的带领下,休整内政,气象一新。尤其是废除了以往的民族不平等制度,法律上规定了各民族一律平等。以往契丹人打死汉人只需赔钱,统和之后,一律参照汉人律法管理,并广纳贤才,很多贤能的汉人进入政治高层,经济高速增长。军事方面,韩德威、萧挞凛等率军依次平定党项、阻卜、女真、高丽等部落或邻国,一时间国势大盛。但他们都明白,真正的考验还没有来,等李继迁的事端稍微平息,宋太宗是不会忘记幽云十六州的。
三月初五,曹彬路先锋李继隆率先进军固安县(今属河北廊坊),在城南与辽军接战,迅速击溃之,占领固安。李继隆未作休整,立即进军新城。新城守将未料李继隆如此迅猛,败绩而去,辽军的涿州外围防线解除。曹彬大军围攻涿州,战斗甚为激烈,李继隆、范廷召在城下一线督战,均中流矢,虽血流满地,却不为所动,继续指挥。诸军为之气烈,奋勇争先,顷刻宋军登满城头,攻克涿州!辽帝国奚宰相贺斯紧急率军来援,却在途中遭遇李继隆部将李继宣巡哨。宋军阵斩贺斯,斩首千余级。敌国的一位宰相比较意外的在一场遭遇战中被斩,由于是李继隆的部将所为,曹彬欲归功于他,但被婉拒了。