唐天祐三年(公元906年)八月,在梁王朱温出兵沧州(今河北沧州东南)之际,晋王李克用乘机袭占潞州,命昭义节度使李嗣昭镇守,既能牵制朱温的势力扩张河北,又借以屏蔽河东。天祐四年(公元907年)朱温称帝后,为夺回潞州,命陕州节度使康怀贞领兵8万,与魏博兵会攻潞州。六月,后梁军进抵潞州城下,李嗣昭与副节度使李嗣弼见后梁军队势盛,避不出战,固守潞州城。康怀贞昼夜攻城,半个月也没攻下来,于是筑垒连营,欲长围久困。
李克用得知潞州被围后,担心日久有失,随即命蕃汉马步军都指挥使周德威为行营都指挥使,率马军都指挥使李嗣本、马步都虞侯李存璋、先锋指挥使史建瑭、铁林都指挥使安元信、横冲指挥使李嗣源等率晋阳兵前往救援。八月初,周德威领兵至余吾,康怀贞遣亲骑都头秦武领兵阻击,被周德威击败。十二日,朱温因康怀贞久战无功,贬其为行营都虞侯,改任毫州刺史李思安为潞州行营都统,率河北兵赶往潞州。到达之后,又于外围增筑深沟高垒,与康怀英部形成“夹寨”,内防守军外突,外可抗击援军。同时,征调山东(指太行山以东)百姓运粮支前。周德威侦知后,屡次派遣轻骑断粮运。李思安为保粮运,又从东南山口修筑甬道通夹寨。周德威则与众将昼夜轮番攻击,使得后梁军疲于奔命自救,只得闭垒自固。
十一月,李克用为牵制后梁再次遣兵增援,先令李存璋率军攻晋州,又派遣军队袭击洺州以策应周德威。十二月十九日,朱温果然派遣河中及陕州兵救援晋州,致使其无力增援潞州。
次年(公元908年)正月,李克用病亡,其子李存勗继晋王位。为了防止内乱发生,周德威等人退军乱柳(今山西沁县南)待命。此时后梁军队久攻潞州不下,士卒疲惫不堪,将校引兵逃亡者数以万计。
朱温怀疑李克用诈死,欲召军还。三月初十,朱温到达泽州,遣使到潞州与诸将议进退,诸将皆认为:潞州被困将近一年,资用没有补充,援兵又撤退了,如果攻打则必克。朱温采纳大家的建议,又改任匡国节度使刘知俊为潞州行营招讨使,并遣使招降潞州守军。当时,潞州城中资用将竭,但为了迷惑后梁军队,李嗣昭与将领佐登城宴饮,并斩招降来使,以示拒降。朱温见状,命刘知俊率1万多精兵攻城,稍获小胜,料潞州孤城指日可破,于是自返京师。四月,李存勗乘后梁军骄惰,与周德威等将领出晋阳疾驰南下。五月初一,进潜三垂岗,静待至凌晨,乘雾偷袭后梁军夹寨。后梁军戒备松懈,睡梦中突遭晋军攻击,惊慌溃乱。晋军乘势分兵两路,周德威率兵攻打西北角,李嗣源率军攻打东北角,填沟烧寨,擂鼓呐喊而入,后梁军大败,招讨使符道昭马倒被杀,将士失亡以万计,丢弃粮资器械无数,潞州围解。