李渊率军三万,正式起兵。李渊传檄诸郡称“义兵”,以维护隋朝社会安定,李渊在太原起兵之后,便以进军关中拿下长安为最终目标。西进的第一个障碍便是西河郡。李建成和李世民兄弟仅用了九天便得胜而归,使得李渊喜出望外。
然后,李渊建立了自己的军事机构:设置大将军府,自称大将军。长子李建成为陇西公、左领军大都督,统领左三军。李世民为敦煌公、右领军大都督,统领右三军。裴寂和刘文静为长史司马。
李渊第二战是决战霍邑。霍邑的西北有个贾胡堡,是霍邑的门户,但守卫霍邑的宋老生却没有派兵把守,李渊由此断定宋老生是个无能之辈。
李渊害怕宋老生守城不出,打持久战对自己不利。于是李渊让两个儿子领几十名骑兵近城观察,自己将部队分成十几队,从城东南到西南,摆出一副攻城的架势。宋老生果然中计,以为李渊要攻城,便领兵三万出战。
李渊领兵假装后退,让李建成和李世民领兵抢占了东门和南门,切断了宋老生的退路。在交战中李渊又散布宋老生已经战死的谣言,动摇了军心。隋军大败,全军覆没。李渊顺利占领了霍邑。
此后,李渊又攻打河东,没有攻下。李渊便听从了李世民直接入关中的建议,分兵攻打长安。在招降长安失败后,李渊下令攻城,占领之后又下令禁止掳掠百姓,受到百姓们夹道欢迎。公元617年11月,李渊拥立隋代王杨侑为帝,即隋恭帝,改元义宁,尊在江都的隋炀帝为太上皇,李渊为大丞相,封唐王,以武德殿为丞相府,李世民为秦王。这实际上是李渊日后称帝的一个过渡。
隋炀帝杨广的右屯卫将军宇文化及在江都兵变,勒死了隋炀帝杨广。然后立秦王杨浩为帝,自己做大丞相。随后宇文化及领兵十万北上,但被李密打败,宇文化及败走魏县,毒死杨浩,自己称帝,建立郑国。第二年,过了皇帝瘾的宇文化及在聊城被窦建德杀死。
隋炀帝杨广一死,李渊便不再需要隋恭帝这个傀儡了。公元六百一十八年,李渊逼杨侑禅位,称帝建立唐朝,改年号为武德,定都长安,李渊称帝长安时,许多隋将割据称雄,农民起义军亦称霸一方,全国处于四分五裂的状态。
唐朝开国后,许多地方还在分裂之中,农民起义军和隋朝残余将领割据各地,李渊在长安安定之后便开始了长达十年的统一战争。薛举曾是隋朝金城郡的豪绅,公元六百一十八年,先称西秦霸王,后又称皇帝,占据了全部陇西,兵力有十多万人。
薛举起兵也想取代隋朝,自己做皇帝,李世民率兵在扶风将薛举打败,将唐的势力扩充到陇右一带,进一步稳定关中局势,薛举病死,他的儿子薛仁杲继续威胁长安。李渊命李世民为元帅第三次出征,这次在浅水原将薛仁杲彻底击溃,薛仁杲也投降了唐朝,陇西收归唐朝。
平了薛举父子之后,李渊又开始对付割据河西的李轨。在李渊建立唐朝之际,李轨称帝,李渊为了进攻薛举,