公元979年,北宋灭掉北汉,宋、辽两国便正面敌对。五月,北汉刘继元投降,赵光义在没有完全准备好与辽全面开战的情况下,就准备收复幽蓟。众大将都以粮草不足为由拒绝出战,只有殿前都虞候崔翰赞成北征。赵光义当即下令,命枢密使曹彬调发各地屯兵。由于扈从六军没有按时到达指定地点集结,赵光义大怒,予以军法处置。
六月,赵光义率兵从东易州的西面渡过拒马河,进入辽国境内。大战刚开始没多久,辽易州刺史刘宇、涿州判官刘厚德便相继投降宋军。随后,赵光义的大军进入幽州城南,驻扎在宝光寺。
当时,辽国的析津府南京守将是南京留守韩德让和马步军都指挥使耶律学古。另外,辽北院大王耶律悉底和统军使萧讨古等人在城北驻扎。
宋军先锋东西班指挥使傅潜、孔守正巡哨城北,在沙河遇到辽军,并与其交战,生擒辽军五百余人。
辽南院大王耶律斜轸则把兵力驻扎在得胜口(14)。耶律斜轸见宋军来势凶猛,不敢正面冲突,便趁先头部队战败的机会,用青色旗帜伪装成收容溃军的样子诱敌。
赵光义得到密探的报告,便有了轻敌之心,继续挥师前进,斩获辽军千余首级。耶律斜轸抓住宋军不断前进的机会,突然袭击宋军后方,结果宋军大败。辽国南京城内守城将士们得到这个捷报后,意志更加坚定了。
六月二十六日,赵光义又亲自率兵攻打清沙河辽军。经过一整天的对战,赵光义虽然斩杀无数辽军,缴获辽军三百余匹战马。但是,辽军仍誓死坚守。
六月三十日,赵光义又督军攻城,宋军派三百人连夜登城,都被耶律学古擒获。事后,耶律学古还发现了宋军开挖的无数条隧道,并将其全部堵上。
当时,辽国南京被围,辽国上下都为之震动,辽顺州守将刘廷素、蓟州守将刘守恩相继率部队赶来支援。