赵光义得知曹彬军进展过速,违背他一向信奉的“持重缓行”的作战意图,赵光义马上意识到曹彬军队万一被辽军切断粮道,后果不堪设想,他立即派人传旨,要求曹彬保护好粮道。
俗话说:道高一尺魔高一丈,当中路军在大将曹彬带领下,迅速进占辽朝涿州城后,辽朝总指挥耶律休哥就制定出正确的对敌策略,他知道自己兵力不足,无法与宋军硬碰硬,就采取避免决战,疲惫消耗宋军的方针。
在夜间,耶律休哥指挥辽朝轻骑兵对北宋军营进行袭击骚扰,不让宋军休息,在白天,耶律休哥用精兵举着漫山遍野的旗子,用马尾巴拉着树枝,扬起尘土。
辽军虚张声势,以迷惑宋军,同时耶律休哥派兵绕至宋军后方,成功地截断宋军粮道。
曹彬10万大军,在小小的涿州城里呆了才10余天,就因为粮草用尽,不得已退回南边的雄州。
曹彬军的后退使北宋本已有利的战局发生根本逆转。
此前,赵光义一直担心曹彬粮草接济问题,这次最担心的事情还是发生了,当他得知曹彬军向后撤退后,再也坐不住了,他大惊失色,认为曹彬在辽军大敌当前而选择退军就食,是一个非常失策的决定。
为挽回败局,他急令曹彬率军沿巨马河向西,与中路米信军靠近,养兵畜锐,等待西路大军潘美、杨业占领雁门关后,再趁着胜利的威力,合兵攻打幽州城。
赵光义的计划是周密的,但是,在执行的时候却出现了问题,他选择曹彬当中路军主帅,是个非常大的失误,因为曹彬为人过于持重懦弱,不具有领导才干和声望。因此,当曹彬的部下诸将听说宋军中、西两路军连克州县,屡战屡胜,他们生怕东路兵不能有所攻取,耽误自己的功劳和前程,他们纷纷主张立即出战。
主帅曹彬根本管不了这帮子大爷,没有办法,只好听信诸将的意见,在雄州城里,略微修整,补充一下粮食后,就立即向涿州城展开进攻。
耶律休哥见宋军主动送到门上,他觉得决战的机会来乐,立即以一小部分兵力对曹军进行阻击,辽朝骑兵且走且战,以迟滞曹军行动。
这时正值夏天,曹彬大军行进途中缺水,士卒们连日征战,已经困乏不堪,距离涿州城只有100里路,但宋军竟走了20天。
在占领涿州城后,曹彬得知辽朝太后萧燕燕亲自率领援军从北边的驼罗口南进,有会同耶律休哥军钳击宋东路军之势,为避免被辽军两路包抄,曹彬命部将赶快带领涿州城中汉族的民众,先行向西南方向撤退,曹彬亲自率宋军主力断后。
但撤退中天降大雨,败退的宋军在泥泞中艰难跋涉,士气低落,将领也无法控制。
辽军主帅耶律休哥是百战名将,他看到宋军混乱,知道千载难逢的机会来了,他亲自率领辽朝骑兵主力从后面全力追击。
五月初三,耶律休哥骑兵追到河北歧沟关,与宋军相遇,由于辽军都是重装骑兵,而曹彬军队基本上是步兵,辽军就如同一辆辆坦克车一样,在河北大平原上无情的碾压着敌人,一个时辰后,曹彬军队顶不住了大败溃退。
曹彬败军一直逃到深夜,到了巨马河时,在渡河过程中,正好被辽军追上,宋军溺死者无数。天亮后,曹彬率领残部继续向高阳(今河北高阳)溃退,途中又被耶律休哥追上,宋军被死伤数万人,知幽州行府事刘保勋、开封兵曹刘利涉父子、殿中丞孔宜等人溺死河中。
曹军遗弃大量兵器、军资,残部退到高阳。耶律休哥向萧燕燕呈请继续追击,乘胜略地至黄河为界,萧燕燕考虑到辽朝军队也疲惫不堪,决定见好就收,命班师还辽朝南京。
北宋皇帝赵光义得知歧沟关战败的消息,万般无奈之下,只能含着眼泪命令宋中路田重进军退驻定州,西路潘美军退驻代州(今山西代县),以避免中西两路再遭败绩。同时赵光义增兵北境,阻止辽军南进。