986年,宋太宗集全国精锐步骑兵20万,分三路大军进攻辽朝。东路由大将曹彬率领,出雄州攻幽燕;中路由田重进率领,从飞狐击蔚州;西路由潘美、杨业率领,出代州、北击朔、云等州。战略意图是,西中两路先进,迂回幽燕西部,东路持重缓进,待中西两路胜利,合围幽燕。宋朝对辽的进攻证明了萧绰以宋朝为防御和进攻之重点的政策是正确的。
萧绰得知军情后,下令南京(即幽州)守将坚决守住城池,等待后援;命令东京兵马火速入关,进援幽州;驻云朔、蔚一带的辽军,在无力抵敌之时可以收缩,向幽州集结。随后,萧绰与小皇帝亲率辽军精锐入关驻于沱罗口(今河北涿县北)。统一调度军马,她下诏,令幽燕地区的各支辽军一律听从耶律休哥指挥,违令者斩。
在战争的开始阶段,宋军得势,潘美、杨业率领的西路军接连攻占了寰、朔、应、云等州;田重进率领的中路军攻克了飞狐、灵丘、蔚州;曹彬率领的东路军攻克了新城、固安、涿州。但这些都不是实质性的胜利。辽军主力未受重创,而是由于收缩和关外辽军的陆续赶到,其力是更加强大。相反,宋军三路之间的分头进攻,暴露出相互不配合,战线过长,用兵分散的弱点。特别是东路军,接近辽军主力,但却粮食供应不上,形成孤军作战的状态。为了给反击创造条件,辽军派出许多小股骑兵,夜出骚扰宋军,白天则集结精锐向宋军示威,搞得宋军疲惫不堪。尤其是东路宋军,在袭击涿州时,只带了十天的口粮,辽军抓住这一致命失误,截断东路宋军粮道,迫使东路宋军后撤救粮。士兵饥饿,精疲力竭,队伍松散,士气低落,处于被动挨打的地步。这时辽军开始准备反击。
在辽军一切准备就绪,宋军的弱点暴露无遗之际,萧太后下令全面反击,反击重点首选宋东路军。面对数十万辽军兵马汹涌而来之势,宋军一路溃逃。萧太后亲自领军追击。至岐沟关,辽军把东路宋军团团包围,大败宋军。号称十万兵马的宋军,死伤大半。曹彬率残部继续南逃,辽军乘胜追击,不给宋军喘息时间,再败宋军。东路军能逃回去的将士已经不多,几乎全部阵亡。
辽军消灭宋东路军之后,转头西进。宋朝中路军闻变立撤,迅速退回宋朝境内自保。辽军全力攻打宋西路军。西路主帅潘美和监军王优不听从杨业的正确部署,强令其出战,宋太宗还要西路军把占州郡的百姓转移内迁。结果,西路军被辽军团团围住,杨业所率部队全部战死,以前占领的州郡全部丢失。
此次大战,宋军损失精锐部队十余万人。辽军在此次战役中锻炼了队伍,大长了士气,从此进入兴盛时期。相反,宋朝廷在此战之后,畏惧辽朝,在军事上不敢再对辽朝轻举妄动,处于被动守卫之势。986年辽宋大战,使辽宋两朝的军事力量对比发生了重大转变。这是萧绰执政苦心经营的重大成果。