這一仗一掃唐軍在淺水原戰敗的恥辱,極大地提高了李世民的威信。在慶祝勝利的宴會上,諸將向李世民請教勝利的原因,李世民答道:“宗羅喉率領的將士都是隴右之人,特別驍勇凶悍,因此我有意疲憊他們,然後出其不意將其打敗。但淺水原一戰,打死和俘獲的都不多。若行動遲緩,他們就會逃入折庶城中,使守城的兵力加強。若緊急追趕,扼住他們的退路,這樣折庶城就空虛了。薛仁杲得知宗羅喉戰敗,還未來得及謀劃,我軍已經近逼城下,因而能夠一舉克城,這就是勝利的原因。”在李世民討伐薛氏父子的同時,盤踞代北的軍閥劉武周乘機勾結突厥貴族,向在山西的唐軍發動了進攻,留守晉陽的李元吉逃回長安,劉武周相繼占領了李唐集團的發祥地晉陽以及晉州(今山西臨汾)、澮州(今山西翼城)等地,使唐朝在黃河東岸的地盤大部分喪失,隻剩下晉西南一隅之地,造成了對關中政權的嚴重威脅。因此,李世民在戰敗薛仁杲以後,立即揮軍進入山西,討伐劉武周。
武德二年(619)十一月,李世民率領唐軍渡過黃河,屯兵柏壁(今山西新絳縣西南),與占領澮州的劉軍主力宋金剛部對峙。李世民仍然采取堅壁不戰的方針,休兵秣馬,養精蓄銳,隻派少許兵力騷擾敵人的運糧通道。
宋金剛部與唐軍對峙五個多月,始終得不到與唐軍決戰的機會,銳氣大挫,而糧餉的運輸又受到唐軍的嚴重威脅。武德三年(620)四月,宋金剛糧盡,得不到補給,被迫北撤。
李世民見宋金剛大軍北撤,興奮地對部下說:“養兵千日,用兵一時,消滅宋金剛,在此一舉!”立即率大軍馬不停蹄,人不下鞍,以一晝夜200裏的速度追擊。激烈的強行軍使將士們又累又餓,掉隊的數以百計。部下勸李世民暫停追擊,讓將士稍作休息,等後續部隊和糧草到達之後再繼續追擊。李世民對大家說:“功難成而易敗,機難得而易失,宋金剛計窮而走,眾心離散,充滿了失敗情緒,一定要乘這個機會消滅他。”並下令軍中:“有再言停留者斬!”經過一天一夜的追擊,第二天,唐軍終於在呂州(今山西霍縣)雀鼠穀追上了宋金剛的部隊。李世民指揮唐軍一天之內與敵軍接戰8次,都大獲全勝,俘虜和斬首敵軍數萬人。第三天,唐軍在介休城與宋軍決戰,宋金剛徹底失敗,隻帶領幾十名騎兵逃回太原。劉武周見宋金剛慘敗而歸,十分害怕,被迫與宋金剛投奔突厥,後來倆人都被突厥貴族所殺。
這次戰役,李世民不但消滅了劉武周的勢力,收複了山西全部失地,還進據代北,擴大了李唐政權在山西的統治區域。更為重要的是,這次戰役之後,唐軍基本上肅清了關內及其附近地區的割據勢力,解除了李唐政權的後顧之憂,為進兵關東奠定了基礎。
平定劉武周以後,李世民率軍回到長安,經過兩個多月的休整,在武德三年(620)三月出關東征。李世民東征的主要對手是軍閥王世充和農民軍竇建德兩大勢力。當時的形勢是:王世充盤踞河南,竇建德擁有河北,並且都已經建都稱帝,王世充國號為鄭,以洛陽為都城;竇建德國號為夏,以沼州(今河北永年)為國都。這兩大勢力如果聯合對抗李世民,大局則很難預料。因此,李世民在戰略部署上采取了各個擊破的方針,決定首先消滅王世充,占領洛陽,然後再進攻竇建德;在戰略戰術上,則一反過去的戰法,由深溝高壘堅壁不戰改為強兵攻堅。
七月,李世民率軍進至距離洛陽隻有70裏的新安(今河南新安),並且以步騎5萬的優勢兵力,迅速奪取了洛陽西線的主要據點慈澗(今河南慈澗),占領慈澗以後,李世民即親率大軍屯於洛陽以北的北邙山,緊逼洛陽,牽製王世充對洛陽外圍防線的支援,同時又分兵四路,進攻洛陽的外圍防線,完成對洛陽的包圍,使王世充處於被動挨打的地位。