正在李氏父子准备发兵之时,太原副留守王威、高君雅两个人有了二心。这两个人本是隋炀帝派到太原来监视李渊的亲信,不除掉这两个人,起兵之事定会受阻,很可能以失败告终,万一这消息传到炀帝耳中,他们李家必遭灭门之灾。面对这种情况,刘文静暗中指使鹰扬府司马刘政会到留守府上紧急奏疏,告发王威和高君雅二人秘密谋反。等到李渊和王威、高君雅共同议事时,刘文静就带着刘政会进入李府,向李渊报告说:“唐公,大事不好,有人向我告密状,说是有人谋反。”李渊听后,佯装大惊失色,慌忙指着刘政会手上的密信让王、高二人取来观看,但是刘政会不肯给:“唐公不知,这状子所告之人正是此二人!”李渊大惊,遂接密状来看,看罢对王、高二人说:“有人告发你们,如何是好?”二人知道李渊想置他们于死地,破口大骂道:“这不过是真正谋反的奸贼想杀我们灭口罢了!”没等骂完,刘文静马上命令手下士兵擒获王、高二人,并迅速将其斩首。至此,李氏父子起兵反隋再无阻挠,开始发兵起事。
李渊自称为大将军,以刘文静为军司马,并将自己在太原本来拥有的部队和招募来的人重新改编。刘文静劝李渊改换旗帜以彰义举,又请联结突厥以增兵威,李渊对这些计策都予以采纳。刘文静奉命出使突厥,始毕可汗问:“唐国公起兵要干什么?”刘文静说:“先帝废嫡嗣而传位后主,故而天下大乱。唐国公为国家近戚,担心王室毁灭,故起兵想废黜不当即位者。希望与可汗兵马一同进入京师,百姓、土地归于唐国公,财帛和金宝归于突厥。”始毕可汗大喜,立即派遣其将康鞘利率领两千骑兵随刘文静而来,又献马一千匹。这个时候,李建成和李元吉也接到李渊的密报,从河东赶到太原。李渊就把所有的部队分为左、中、右三军,并派李建成和李世民分别率领左、右军,自己亲自统领中军,开始正式起兵。
太原起兵后首先要解决的问题就是占领太原南边的西河郡,李氏父子决定对西河郡先礼后兵。但是当李渊传檄至西河郡的时候,西河郡的郡丞高德儒坚决地拒绝了。看来战事不可避免,李渊只好派李建成和李世民率军攻取西河,这是李氏父子晋阳起兵后的第一战,事关非小,所以李渊非常重视。临行前,李渊对当时参战的太原令特地嘱咐道:“我的两个儿子年纪尚轻,请您多多参与谋划。”事实证明李渊多虑了。李建成、李世民兄弟得到广大士兵的拥护,这些新入伍的士兵纷纷表示要追随他们为李姓王朝建功立业。而李建成、李世民兄弟也与士兵们同甘共苦,战场上身先士卒,战场之外严明军纪,禁止士兵偷吃或抢夺附近百姓瓜果,如有类似现象发生立即找物主给予赔偿,也并不责备偷窃士兵,深得军心和当地老百姓的爱戴。
义军到达西河郡城下,高德儒闭城拒守,但是李建成和李世民带领的军队一鼓作气,很快就攻下了西河郡。抓住高德儒后,李世民历数其罪过,说:“你当初指野鸟为凤凰来欺骗君主,才获得了这样的高官,我们兴义兵,正是要诛灭你这样的奸佞小人。”随后,李氏兄弟将高德儒处死,其余官员一个不杀,还亲自抚慰大小官员和百姓,这样,西河很快被平定了。西河首捷,往返仅九天,极大鼓舞了士气。李渊高兴地说:“要是都像这样用兵,我们很快就可以横行天下了。”于是就定下了直取长安的计划。西河战役后,李渊封李建成为陇西公、左领军大都督,负责指挥左三军。封李世民为敦煌公、右领军大都督,负责指挥右三军。任命裴寂为长史,唐俭和温大雅为记室,温大有参与机密,长孙顺德和刘弘基等为统军,形成了一套完整的军事、政治机构。
大业十三年(617)七月,李渊誓师于野,公开指责杨广的罪责,不再承认他的皇帝身份和地位,而是拥立年幼的代王杨侑为皇帝,留三子元吉守太原,亲自带领建成、世民率兵共三万人马进军关中。消息传到长安,代王杨侑非常震惊,赶紧派遣虎牙将宋老生率领精兵三万屯驻在霍邑,又派遣左武侯大将军屈突通镇守河东,遥相呼应,来抵御李渊。
正值两军准备浴血奋战之时,突然下起连绵大雨,李渊的军队受阻,和宋老生的部队相持了起来。雨下了很长时间不停,李渊的军队粮草缺乏,军心开始动摇,人心浮动,李渊召集众将领召开紧急军事会议。裴寂等人说:“宋老生、屈突通联合踞守险要,很难在短时间内攻下。现在大雨不停,军中缺粮,且士兵家属多在太原,人心思归,不如先返太原,重整旗鼓后再次进军关中。”李渊同意裴寂的观点,李世民却极力反对:现在遍地都是稻谷,怎愁没有粮食?而且宋老生此人轻狂浮躁,孩儿只需一战就可将他擒住。刘武周虽然徙远攻打太原,但他也不会忘记就近的马邑,久攻不下自会离去。我们本是兴大义而救百姓,理应进入咸阳,号令天下,如今只遇到了宋老生这样的小敌就想班师回朝,若退兵之时士兵哗变,义兵解体,即使安然退回太原,也落下不好的名声,以后还怎么保全自己?哥哥李建成也支持李世民的意见,但李渊心意已决,下令军队返回太原。
到了晚上,李世民再要进入李渊的营帐劝阻,但李渊已经在帐中躺下歇息,命任何人都不得进帐。李世民进不去营帐,就在帐外放声大哭,哭声传到帐中,吵醒了李渊,李渊把儿子召进帐中问话。李世民说:“父亲,我们举兵是为了天下的大义,进军攻战才能取胜,后退必定溃散!如果贸然撤退,我们的军队溃散在前,敌军追击在后,我们就只有灭亡了,想到这里我非常难过,忍不住哭了起来。”
李渊听了李世民的话,幡然醒悟过来,说:“我只考虑将士们的家眷都在太原,等退回去修整再战,但没有考虑到行军作战进则胜退则败的道理。要不是你提醒我,真不知道是什么结果。但是现在军队已经出发,我们怎么办呢?”李世民回答说:“右军整装而未发,左军虽然出发,估计还没走远,请让我去追赶他们。”李渊答应了他的请求,让李世民和李建成连夜把左军追了回来。过了几天,太原的粮食也运到了。八月初的时候,连绵不断的大雨也停了,形势发生了巨大的变化。
李渊随即命令部队晾晒铠甲、器械、行装。初三早晨,李渊率军从山脚下的小路向东南直抵霍邑。李渊派李建成、李世民率领几十骑到城下,举鞭挥旗辱骂宋老生。宋老生大怒,率三万人从东门、南门分道出战。李渊、李建成与宋老生交战,李世民率一队轻骑从南原率兵驰马而下,冲击宋老生的军阵,出击宋老生军的背后。宋老生陷入腹背受敌的境地,军士大乱。李世民趁机大喊:“已经抓住宋老生了!”宋老生的士兵听到这个消息,纷纷逃窜。李渊的兵士迅速直抵城门,将城门关闭了。宋老生下马跳入壕沟,刘弘基就将他杀死。那一战隋军的死尸遍布几里。天黑了,李渊命令登城,当时没有攻城的器械,将士们赤膊登城,攻下了霍邑。
一鼓作气拿下霍邑后,大军沿着汾水挺进,临汾郡、绛郡的隋兵望风而逃,大军顺利进入河东,到达龙门县。李渊组织了先遣部队从壶口渡河据守西岸,自己带李建成、李世民兄弟沿河南下,围攻河东郡。
河东是战略要地,宛如关中之门户。隋朝骁卫大将军屈突通闭城拒守,一时间难以攻下。为了争取时间,李渊采取“两从之”的办法,分兵两路,大军渡河入关,重点攻取长安,同时留相当兵力对付屈突通。李渊父子率主力部队渡河后,建成和刘文静等屯守永丰仓和潼关,屈突通得知李渊去攻长安,赶紧驰援,兵败被俘。而李世民率统军刘弘基、长孙顺德等数万人拿下了包括泾阳、云阳、武功等渭北诸县。李世民所到的地方,对百姓秋毫无犯,深得人心。
接着,李世民派人报告李渊,请李渊赴长安。李渊命建成率精兵赴长乐宫,世民率新附诸军北屯长安故城。十月,李渊到达长安,设营于春明门之西北。得知这个消息,在关中的李渊家族和宗室的人,都纷纷起兵接应。李渊的女儿平阳公主和女婿柴绍给予这支军队巨大的支援。李渊的堂弟李神通得知李渊起兵,和长安大侠史万宝等人也起兵响应。这些人,一方面牵制了隋朝的相当重要的一部分军力,另一方面对攻打长安提供了巨大的支持,极大地鼓舞了士气。就这样,长安被李渊所率领的二十万大军围困,到十一月就攻克了长安。
平定长安后,李渊立年幼的隋代王杨侑为傀儡皇帝,即隋恭帝,改元为隋义宁元年。李渊为假黄钺、使持节、大都督内外诸军事、尚书令、大丞相,进封唐王,以武德殿为丞相府,独揽军国机务,成了实际的皇帝。618年五月,李渊安排隋恭帝禅位,李渊即皇帝位于太极殿,国号唐,改元武德,定都长安。武德元年六月,李世民为尚书令,裴寂为右仆射、知政事,刘文静为纳言。不久,唐高宗李渊立李建成为皇太子,世民为秦王,元吉为齐王。