隋末諸侯紛爭,戰亂連年,隋大業十三年(617年)六月,李淵自太原出兵。八月,在霍邑之戰大捷後,乘隋軍主力在洛陽附近與瓦崗軍大戰之機,即沿汾水(今汾河)挺進,連下臨汾、絳郡(治今山西臨汾南、新絳),進至龍門(今河津東南)。隋左武侯大將軍屈突通領兵數萬屯河東(今永濟西南),阻擋李淵軍。
此時司馬劉文靜引突厥大將康鞘利所率兵500、馬匹2000趕至,使李淵實力大增。關中起義軍首領孫華率兵響應。李淵遂遣左右統軍王長諧、劉弘基及左領軍長史陳演壽等率步騎6000自梁山(今陝西韓城境)渡河,營於黃河西岸,以待大軍。
九月,李淵率軍圍河東,不克。遂採納次子李世民與裴寂等建議,留諸將圍河東,自引軍而西。隋朝諸縣多請降。李淵率軍渡黃河,進駐朝邑(今大荔東南)並遣長子李建成率領劉文靜、王長諧等諸軍數萬人,進屯永豐倉,扼守潼關,以阻隋軍西援;遣李世民率領劉弘基等諸軍數萬人,沿渭水北岸經高陵(今屬陝西)迂迴長安。屈突通獲悉李淵軍西入,遂留鷹揚郎將堯君素守城,自領數萬人援長安,被劉文靜等阻於潼關。
李世民所部得到平陽公主等李氏家族及農民起義武裝的接應,順利抵達涇陽(今屬陝西)。李淵遂命劉弘基、慰撫使殷開山率兵一部南渡渭水,奪取長安故城(今西安西北)。李世民引兵赴司竹園(今周至東南),使新附的地方武裝李仲文、何潘仁等部屯於阿城(即阿房宮故址,今西安西南),其兵力發展到13萬人。李世民自盩厔(今周至)遣使請李淵期日赴長安。李淵料定屈突通不能西援,遂命李建成選精兵,經新豐(今臨潼東北),直抵長樂宮;李世民率新附諸軍回屯長安故城;李淵自馮翊(今大荔)率軍經下邽、櫟陽(今渭南北、臨潼北)西進。十月初四,李淵至長安,營於城東。此時諸軍皆集,合兵20餘萬。隋京師留守、刑部尚書衛文升、左翊衛將軍陰世師等奉代王楊侑據守長安城。李淵遣使告諭不應,遂於十四日下令圍城。二十七日命令攻城。
李淵軍圍長安後,並不急於攻城,而是嚴申軍令:士兵不得擅自離營,不得入附近村落搶掠。同時派人至城下,向城中守將申訴尊隋之意,即希望長安守軍能棄暗投明,以免因用兵而雙方遭受傷亡,但對李淵的好意,守城軍置若罔聞。不得已,李淵命諸軍攻城。並與部下相約「毋得犯七廟及代王、宗室,違者夷三族!」 十一月,李淵匯合李建成、李世民、劉弘基之兵20餘萬攻打長安,軍頭雷永吉率先登上城頭,京城長安被攻克。