五月遼國的耶律休哥派大軍來救援南京,令耶律沙進軍至高梁河與宋軍大戰,自己則和耶律斜軫從左右兩翼夾擊宋軍。宋軍難以抵擋,圍城的部隊也過來支援。城內守軍見到大援已到,開門殺出,宋軍在幾路夾擊下崩潰大敗,趙光義本人也中箭南逃。
太宗趙光義經過了七年的長期準備,再次發動“雍熙北伐”。
這一次,趙光義沒有親征。宋軍依舊分三路出發,東路軍用曹彬和米信為主副帥作為主力,緩慢進軍,吸引遼軍主力以達到讓中路和西路軍長驅直入的效果。中路軍用田重進為主帥,西路軍用潘美楊業。最后三路會師進攻南京。
遼軍對于戰事準備不足,應變倉促。宋軍三路連續攻克州郡,進展很順利。遼軍守衛南京的是耶律休哥,他兵力不足,選擇堅守避戰,派輕騎兵繞道打擊曹彬軍的糧道,并不斷派騎兵騷擾曹彬軍,以拖延其進軍速度,為遼軍主力救援贏得時間。
曹彬軍進占涿州之后,僅僅十天,就斷糧了。曹彬就放棄涿州,退守雄州就糧。趙光義得到消息大驚,讓曹彬不可后退,應和米信軍會合,然后等待中路軍和西路軍來會師。因為趙光義本來的既定戰略就是三路大軍會師,然后進攻南京,如果東路曹彬撤退,則會令中路、西路軍孤立。
此時曹彬軍中生變,部下將領聽說中路和西路捷報頻傳深以為恥,因為他們所在的東路才是主力,于是紛紛要求出戰,曹彬難以控制,于是會合米信軍后,再次進攻涿州。但此時遼國主力援軍已經到達涿州東北,以逸待勞。
耶律休哥又不斷派輕騎夜襲曹彬軍,導致曹彬軍行軍勞累,到達涿州時已疲憊不堪,并且再次糧食緊缺,曹彬不得不再度撤軍。遼軍全軍追擊,于岐溝關將曹彬軍圍困。曹彬與米信趁夜突圍逃走,宋東路軍潰敗。
中路軍田重進接到指示安全撤回。而趙光義給西路軍下達了遷寰、朔、云、應四州人民南下的撤退任務。于是西路軍遭到遼全部主力的追擊。副將楊業和主將潘美、監軍王侁產生分歧,孤軍迎戰,戰敗被俘,絕食而死。至此,趙光義所指揮的雍熙北伐宣告徹底失敗,遼軍乘勝南下直推進到大名以北。
這次雍熙北伐影響非常深遠,宋朝國力大損,自此之后宋軍產生恐遼心理,以至于徹底放棄收復燕云,宋朝對于遼國的戰略進攻也變為戰略防御
眾將想通這一點不禁釋然,也暗自出身冷汗。當下的形勢與當初何其相似,兩次北伐皆是初時極為順利,連戰連捷甚至推至南京城下,而彼時的南京正是當下的大都。當時上至皇帝,下至普通軍卒皆以為北伐勝利在望,不免被勝利沖昏了頭腦,但是不知此時已經埋下了失敗的種子。