两路军连克州县、屡战屡胜,因此求功心切,都主张出战。曹彬听信诸将意见,在补充粮食后,引军北渡白沟河,与耶律休哥军对垒。宋军结方阵,堑地两边而行,向涿州进军。耶律休哥以一部兵力阻击东路宋军,使得宋军且行且战,行动迟缓,100里路竟走了20天。由于途中缺水,曹彬部宋军困乏不堪。
到达涿州后,曹彬得知萧太后和辽圣宗率大军已经到达涿州东面50里处,有会同耶律休哥军钳击东路宋军之势。于是,曹彬命部将卢斌携带城中民众先行向南撤退,亲率主力断后。发现宋军撤退后,耶律休哥迅速抓住战机,立即率领精骑发起追击。
当时,天降大雨,败退的宋军在泥泞中艰难跋涉,士气低落,“无复行伍”,将领也无法控制,5月初,耶律休哥的骑兵在歧沟关追上了逃跑的宋军,这支疲惫之师霎时崩溃,曹彬率领溃军连夜抢渡拒马河,慌乱中人马自相践踏,伤亡甚众,知幽州行府事刘保勋、开封兵曹刘利涉父子、殿中丞孔宜等人溺死河中,宋军残部逃至易水南岸,又被耶律休哥的骑兵追上,前后死者数万人。
宋太宗得知东路宋军惨败的消息后大惊失色,急令中路军退守定州,西路军退屯代州。随后,辽军又迅速向中路和西路宋军发起进攻。结果,中路宋军不战而退,只剩下潘美和杨业率领的西路宋军孤悬敌后,形势危急。宋西路军监军使王优在兵力对比悬殊的情况下,令杨业率兵出击。杨业原本不同意孤军深入,可监军使王优讥讽杨业说:“君素号无敌,今见敌逗挠不战,得非有他志乎?”杨业被迫率兵出战,结果全军被歼。杨业本人也受重伤后被辽军所俘,绝食3日而死。至此,宋三路大军皆败,所取州县复失。
宋军在歧沟关一战遭到惨重失败后,北宋政权便完全丧失了战略进攻能力,被迫转入战略防御。耶律休哥因功封宋国王。同年末,与太后会兵,在君子馆之战中全歼宋军数万。
公元988年(统和六年)冬,耶律休哥率辽军大举南侵,攻克涿州,陷长城口。李继隆领兵北上增援不敌耶律休哥,宋军退保北平寨。耶律休哥领八万精骑继续南下,陷满城,南下祁州。李继隆再次赴战,路上遇敌激战之后斩获不少,最后依据宋太宗指令退保唐河。耶律休哥率精锐铁骑直扑唐河。李继隆一面招来镇州都部署郭守文增援,一面在北岸设下二千名伏兵准备背后偷袭。
耶律休哥很快发现了宋军伏兵,他首先对宋军伏兵实施攻击。李继隆见情况有变立即下令荆嗣出战救援,荆嗣杀入重围救出伏兵,迅速退到河边,把军队分为三阵,背水抵抗。辽将耶律休哥亲率骑兵主力登上烽火台求战,然后全力冲击。勇将荆嗣顽强抵抗,战斗拉锯了好几个回合后,荆嗣军抵敌不住且战且退撤到南岸和李继隆主力会合。辽军见势迅速杀过河桥。
李继隆下令田敏带领其数百名静塞骑兵来到阵前,田敏不负众望带着骑兵“摧锋先入”。李继隆,荆嗣,郭守文乘势掩杀,辽军大败,横尸遍野,宋军一直追击到满城,斩首一万五千级获马万匹,耶律休哥首尝败绩。
公元989年(统和七年),耶律休哥再率三万铁骑南侵,旨在切断威虏军的补给。宋朝内部展开了激烈的争论,有人建议放弃威虏军。李继隆表示反对,他召集镇、定、高阳关精锐万人,毅然出发运粮,归途中渡过徐河后遭到耶律休哥追击。李继隆派麾下大将尹继伦偷偷进至辽军后背。到了凌晨尹继伦乘耶律休哥不备,突然从背后袭击辽军,辽军正在用餐不及防备,顿时陷入混乱。尹继伦杀入辽军指挥部,耶律休哥此时正在吃饭,见此情形丢掉筷子,被短兵砍伤手臂,伤得非常严重,狼狈撤退,
但辽军毕竟人多,很快组织反击,尹继伦渐渐支持不住,连连败退。此刻李继隆和大将王杲,范廷召领兵杀到增援。辽军败状据《宋史》记载“杀其将皮室一人。皮室者,契丹相也......寇兵随之大溃,相蹂践死者无数”,宋军追击了几十里,辽军在曹河遭到宋军孔守正伏击,又死伤不少。
同年,宋朝派刘廷让等乘夏日水涨来攻易州。易州辽守将颇为惧怕。耶律休哥独率精锐迎战于沙河以北,杀伤宋兵数万,获辎重不可计,俱献于朝廷。萧太后嘉赏休哥之功,诏令此后入朝免拜、不用称名。从此,宋兵不敢再出兵犯北。
公元998年(统和十六年),耶律休哥去世。
耶律昭:“古之名将,安边立功,在德不在众,故谢玄以八千破苻坚百万,休哥以五队败曹彬十万,良由恩结士心,得其死力也。”
脱脱《辽史》:“宋乘下太原之锐,以师围燕,继遣曹彬、杨业等分道来伐。是两役也,辽亦岌岌乎殆哉!休哥奋击于高梁,敌兵奔溃,再战歧沟关,旋复故地。宋自是不复深入,社稷固而边境宁,虽配古名将,无愧矣。”
王世贞《王弇州崇论》:“羊叔子世所谓仁人也、然吾读辽史、以为耶律休哥之填燕、胜叔子远。叔子之填襄阳、未尝一日而忘取吴。其所以勉而为仁者。老子之所谓将欲取之、必固与之也