公元616年,当时已年满50岁的李渊接到隋炀帝让他去太原剿匪的命令很高兴。他对二儿子李世民说:“我的爵衔是唐国公,而太原正是圣君唐尧的故地,现在我到太原来,就像是上天的旨意一样。现在天下大乱,也许是我起点的最好时机。”
当时有一首广为流传的民谣《桃李章》说,李氏将兴,成为下一位王。
此事与李渊抵御突厥不利的事迭加起来,使隋炀帝杨广对他极为不满,伺机要剪除他这个心腹之患。本来李渊就对杨广的逆行倒施、荒淫残暴不满,再加上各地起义风起云涌,隋王朝摇摇欲坠,李渊因此更坚定了起兵反隋的决心。
他首先逮捕处死了炀帝派来监视他的两位副官,又以屈辱的方式向突厥俯首称臣,取得了突厥可汗的支持,从突厥人那里得到了数千匹好马和几百名士卒。
经过一段时间的招兵买马,公元617年阴历七月初,李渊带领大儿子李建成,二儿子李世民向隋都大兴城进发,留下四儿子李元吉守太原。
他们一路上与隋军打了许多硬仗,在接近潼关时,李渊接到农民起义军领袖李密的一封信,希望二李结成同盟,共同反隋。
李渊很担心李密猜到自己的军事计划,并加以阻止,但又不想和李密联合,他回信说:我是隋朝的将士,起兵只是为了恢复秩序,我是有爵位的,我已经很满足了。接着,他笔锋一转说:现在隋炀帝已失去了人心,兵荒马乱的,天下必须有一个“司牧”,而依我之见,只有你李密的才气和实力可以成为当今的“司牧”。李密接到信以后非常高兴,答应不阻止李渊向隋都进军。
李渊接近大兴城以后,又得到他的女儿和他的弟弟李神通的帮助,他的女儿以散施财物的方法收买人心,使许多逃难的民众和其他叛乱者都投到了唐军麾下,几支队伍汇合后,号称有20万人。
经过精心策划和部署,李渊终于在围城一个月以后打下了大兴城,进城以后,李渊严禁抢掠,保护皇室的安全,并立隋炀帝年幼的孙子杨佑为隋恭帝,而遥尊逃亡在外的炀帝为太上皇。
公元618年5月,李渊在攻下东都洛阳以后,废了傀儡皇帝,自己在大兴城登基做了皇帝成为唐高祖,改国号为唐,改大兴城为长安,年号为武德。李建成立为太子,李世民为秦王,李元吉为齐王。