唐武德二年至三年(619年~620年),李世民奉命进攻刘武周,大败刘武周。
武德二年(619年)六月,唐高祖对刘武周的进攻非常忧虑,于是任命裴寂为晋州道行军总管,以讨刘武周。在度索原,刘武周军大败裴寂军,随后攻克并州、太原、晋州。武德二年(619年)秋冬之季,刘武周攻克唐州县,吕崇茂也起来响应刘武周,隋将王行本据守蒲坂(今山西永济南)对抗唐军,并且勾引刘武周南下,威胁关中。唐廷为之震动。李世民请求朝廷给3万人马进击刘武周,高祖同意。
李世民奉命出击河东,屯兵于柏壁。武德二年(619年)年末,刘武周部下吕崇茂、尉迟敬德、寻相等率兵在夏县大败永安王李孝基,并俘李孝基及其部属。尉迟敬德、寻相将归浍州,李世民派兵部尚书殷开山、总管秦叔宝等人在美良川伏击敌人,大败尉迟敬德,歼敌2000多人。不久,尉迟敬德、寻相秘密带精骑兵援救蒲坂的王行本。李世民自己统帅步兵、骑兵3000人乘夜从小路行军,赶至安邑(今山西翼城附近),从半路突袭尉迟敬德,取得巨大胜利。尉迟敬德、寻相逃走。
李世民带着俘虏的敌人返回柏壁。唐将都请求李世民与刘武周交战,李世民未难,说对孤军深入的刘武周不宜速战,而应将其拖垮,待其弹尽粮绝,会自动逃
经过数月对峙,刘武周部宋金刚军粮耗尽向北撤退,李世民下令追击。武德三年(620年)四月,追至吕州(今山西霍县),唐军大败寻相,乘胜逐北。在雀鼠谷,唐军一天8战,大败宋金刚主力军,歼敌数万人。陕州总管于筠从敌营中逃回后,随李世民围困介休。宋金刚尚有残兵2万多人,背城布阵,与唐军在西城门外交战。李世民派总管李世勋正面迎击宋金铡,自率精锐骑兵突袭宋金刚的背后,大败宋军,歼敌3000人。宋金刚力不能敌,率骑兵逃走。李世民率兵继续追击数十里,到达张难堡。浩州行军总管樊伯通、张德政据城自守。尉迟敬德收集败兵据守介休,李世民派遣任城王李道宗、宇文士及前去劝降。尉迟敬德、寻相率介休、永安二县降唐。李世民任尉迟敬德为右一府统军,仍旧统领旧部8000人,配合唐军作战。刘武周听说宋金刚战败,退出并州向北逃入突厥。宋金刚收拾旧部力图再战,但部下全无斗志,宋金刚也只得率百人逃入突厥。不久,宋金刚策谋逃往上谷,被突厥追杀。岚州总管刘六儿跟随宋金刚在介休,被李世民擒杀。李世民兵至晋阳,刘武周所封仆射杨伏念向李世民献城。唐俭也封好府库等待李世民。至此,刘武周掠取的唐河东州县都被李世民收复。高祖听说并州收复,很高兴,设宴招待群臣,赠以绸缎。恢复唐俭的官爵,仍旧以他为并州道安抚大使。李世民留李仲文镇守并州,高祖以李仲文检校并州总管。
刘武周逃入突厥境内后,被突厥杀死。突厥任命苑君璋为大行台,统领刘武周的旧部。
