开宝元年(968年)七月,北汉主刘钧去世,养子刘继恩继位。太祖认为进兵时机已到,八月命令大军直趋北汉。
九月,北汉发生内讧,北汉主刘继恩被杀,其弟刘继元即位。这时,宋军已进入北汉境内,继元急忙向辽求援,同时派刘继业等率兵防守团柏谷(今山西太谷南),以马峰为监军。马峰在洞过河与宋将李继勋遭遇,宋军大胜,乘胜追击,来到太原城下。十一月,辽南院大王挞烈率兵马来援救北汉。宋将李继勋等人怕孤军深入,领兵南归。辽和北汉联军于是入侵宋境,大肆掳掠晋(今山西临汾)、绛(今山西新绛)两州,然后收兵。
开宝二年(969年)二月,太祖赵匡胤命令曹彬、党进等人分别领兵先赴太原,接着下诏亲征。不久,李继勋等人夺取了团柏谷,将太原城团团围住。三月,太祖来到太原城下,下令筑长连城围攻太原,并接受陈承昭的建议,引汾河水灌太原城,并在城外造四寨。北汉大将刘继业出城攻打东、西两寨,大败而还。
四月,辽军分两路救援北汉,败于阳曲,五月败于嘉山。太原守军士气不振。闰五月,汾水灌入太原城,城中一片惊慌,北汉人急忙堵塞进水口。
宋军屯兵太原城下,久攻不克,损兵折将。时值暑雨连绵,士卒多患腹病。不久,辽又派强兵奔赴太原救援北汉,驻扎在太原西面,北汉更难以攻取。于是宋君臣商议班师回朝。
宋军撤回时,将一万多户北汉人迁到山东、河南。北汉也得到宋军遗弃的大量军储。
