隋末诸侯纷争,战乱连年,隋大业十三年(617年)六月,李渊自太原出兵。八月,在霍邑之战大捷后,乘隋军主力在洛阳附近与瓦岗军大战之机,即沿汾水(今汾河)挺进,连下临汾、绛郡(治今山西临汾南、新绛),进至龙门(今河津东南)。隋左武侯大将军屈突通领兵数万屯河东(今永济西南),阻挡李渊军。

此时司马刘文静引突厥大将康鞘利所率兵500、马匹2000赶至,使李渊实力大增。关中起义军首领孙华率兵响应。李渊遂遣左右统军王长谐、刘弘基及左领军长史陈演寿等率步骑6000自梁山(今陕西韩城境)渡河,营于黄河西岸,以待大军。

九月,李渊率军围河东,不克。遂采纳次子李世民与裴寂等建议,留诸将围河东,自引军而西。隋朝诸县多请降。李渊率军渡黄河,进驻朝邑(今大荔东南)并遣长子李建成率领刘文静、王长谐等诸军数万人,进屯永丰仓,扼守潼关,以阻隋军西援;遣李世民率领刘弘基等诸军数万人,沿渭水北岸经高陵(今属陕西)迂回长安。屈突通获悉李渊军西入,遂留鹰扬郎将尧君素守城,自领数万人援长安,被刘文静等阻于潼关。

李世民所部得到平阳公主等李氏家族及农民起义武装的接应,顺利抵达泾阳(今属陕西)。李渊遂命刘弘基、慰抚使殷开山率兵一部南渡渭水,夺取长安故城(今西安西北)。李世民引兵赴司竹园(今周至东南),使新附的地方武装李仲文、何潘仁等部屯于阿城(即阿房宫故址,今西安西南),其兵力发展到13万人。李世民自盩厔(今周至)遣使请李渊期日赴长安。李渊料定屈突通不能西援,遂命李建成选精兵,经新丰(今临潼东北),直抵长乐宫;李世民率新附诸军回屯长安故城;李渊自冯翊(今大荔)率军经下邽、栎阳(今渭南北、临潼北)西进。十月初四,李渊至长安,营于城东。此时诸军皆集,合兵20余万。隋京师留守、刑部尚书卫文升、左翊卫将军阴世师等奉代王杨侑据守长安城。李渊遣使告谕不应,遂于十四日下令围城。二十七日命令攻城。

李渊军围长安后,并不急于攻城,而是严申军令:士兵不得擅自离营,不得入附近村落抢掠。同时派人至城下,向城中守将申诉尊隋之意,即希望长安守军能弃暗投明,以免因用兵而双方遭受伤亡,但对李渊的好意,守城军置若罔闻。不得已,李渊命诸军攻城。并与部下相约“毋得犯七庙及代王、宗室,违者夷三族!” 十一月,李渊汇合李建成、李世民、刘弘基之兵20余万攻打长安,军头雷永吉率先登上城头,京城长安被攻克。