當唐朝費了九牛二虎之力平定了薛舉,正躊躇滿誌地準備再次兵發洛陽,進而平定天下之際,卻突然挨了當頭一棒。在馬邑安分了近兩年的劉武周突然向李淵的老巢山西發起了進攻。李淵成也突厥敗也突厥,之前與突厥交好牽製得劉武周不敢妄動,誰知現在一看李淵真的有希望一統天下了,突厥立馬就支持劉武周向李淵實施暗算。
武德二年(619)三月二十二日,劉武周兵發太原。四月初便抵達黃蛇嶺(今山西榆次北),開始向太原東麵的軍事要地榆次發動進攻。此時太原的軍事統帥為李淵的四兒子、當時的並州總管李元吉。李元吉沒什麼政治才能,他在太原最愛幹的就是打獵,號稱“我寧三日不食,不能一日不獵”。還喜歡玩惡作劇,拿弓箭當街射人,以把人嚇得狼狽躲避為樂。當劉武周打來的時候,他倒是想出了一個天才的點子,居然讓車騎將軍張達僅僅率一百名步兵出戰,也不知道這位張達平時是怎麼得罪了李元吉的,這簡直就是要他去送死。當然張達不去還不行,否則的話立時就要死了,一戰之下唐軍自然全軍覆沒。張達憤而投降,並主動給劉武周當向導攻陷了榆次。
四月十八日,劉武周率兵包圍太原,李元吉出城反擊,獲得了一定的戰果,使得劉武周圍城之兵後退。此時李淵也反應了過來,下詔令太常卿、行軍總管李仲文率兵解圍。而劉武周為了阻擊唐軍援兵,對太原圍而不攻,分兵攻陷石州(今山西離石),殺刺史王儉,五月二十日又攻陷了平遙。六月,宋金剛因為被竇建德擊敗而投奔劉武周,劉武周獲此大將之後大喜過望,不但封之為“宋王”,還將一半家產賜給他。而宋金剛,為了獲取劉武周的信任,將自己的老婆給休了,重新娶了劉武周的妹妹,二人變成了一家人。於是劉武周軍攻勢更加凶猛,與唐軍援軍李仲文和左武衛大將軍薑寶誼於雀鼠穀大戰,劉武周部將黃子英偽敗設伏,將唐軍一舉擊敗。此後劉武周又繼續攻陷了山西的各個重要城市,太原已經漸漸陷入被合圍的境地。
此時一直沒有什麼作為的李淵重臣之一裴寂主動請纓平劉武周。可是此人從李淵晉陽起兵之始就顯現出他不是搞軍事的料子,因此被宋金剛打得幾乎全軍覆沒,太原方麵失去了後方增援的指望。九月十六日,劉武周開始對太原進行總攻,李元吉大義凜然地對部將劉德威說:“你率領老弱守城,我率領精銳出戰。”當時把劉德威感動得不行。結果李元吉當晚的確是出城了,但不是出城作戰,而是帶著一家老少金蟬脫殼,溜之大吉,太原淪陷。劉武周於是將主力部隊交付給宋金剛,讓其繼續西進,接連攻陷晉州(治今山西臨汾)、龍門(今山西河津東南)。十月,宋金剛占澮州(治翼城,今屬山西)。夏縣(今夏縣西北禹王城)人呂崇茂與占據蒲州(治河東,今山西永濟西南蒲州鎮)的隋舊將王行本也起兵響應劉武周,整個河東地區幾乎全部失陷。禍不單行,山西失陷之後,唐朝在河北的軍團也被竇建德擊滅,而南方的蕭銑又將湖北一帶的唐軍打得抬不起頭來。對於唐朝來說,已經到了“山西危急!河東危急!關中危急!”的緊要關頭了。李淵甚至萌生了放棄河東,死守潼關的念頭。當然這樣一來,關中的確暫時可以保全,但是劉武周必然會坐大,新興的唐朝在各路割據勢力麵前號召力勢必會大減。此外,劉武周的地盤與王世充和竇建德的接壤之後免不了會互相勾結,又會增大唐朝統一的難度。此時又是李世民主動請纓,要求率軍對抗劉武周,號稱給他三萬精兵就能掃平劉武周。平定薛秦勢力彰顯了李世民的戰爭天賦,他的話對李淵來說分量很重。李淵考慮之後感覺的確如李世民所說的,太原是根基所在,絕不能失,因此將關中大部分的機動兵力都調給了李世民,任命他為總帥再次出征。
武德二年(619)十一月十四日,李世民率軍從龍門(今山西河津)趁著黃河結冰期順利渡過黃河,於絳州西南的柏壁(今山西新絳西南)屯兵,與宋金剛部相持。劉武周軍橫掃河東之後大肆搶劫,給當地百姓造成了深重的苦難,當地的地主豪強也同時遭了殃,損失巨大。於是勢力強大的地方地主豪強們紛紛結寨自保,以對抗劉武周。唐軍到達柏壁之後後勤供給開始出現了問題,但是李淵當年從太原進軍關中的時候一路群眾工作做得非常好,唐軍一路紀律嚴明、秋毫無犯,因此李世民發布通告進行號召的時候一呼百應,不但有大批的青壯主動投軍,還有地方上的大戶主動貢獻軍糧,讓唐軍很快便有了大量的糧食儲備,人民的力量在這一刻彰顯無遺。