大业十一年(公元615年),隋炀帝任命唐国公李渊为河东宣慰大使,留守太原,赴山西镇压农民起义。李渊,字叔德,祖籍陇西成纪(今甘肃秦安西北部)人。他是大贵族出身。其祖父李虎曾帮助宇文泰在关中建立政权,是西魏、北周的府兵八柱国之一,死后被追封为唐国公。李渊八岁时继袭唐国公的封爵。李渊升任太原留守后,一些关东世族子弟为逃避辽东兵役,纷纷投靠李渊,河东的一些官吏看到隋朝大势已去,也和隋朝统治者貌合神离,不断劝李渊乘机起兵,建立新王朝。
李渊次子李世民是太原起兵的主要策划者,晋阳县令刘文静向李世民分析当时的形势说:“现在隋炀帝远在江淮,李密围攻洛阳,各地起义军不下数万,在这种形势下如果有人起来倡呼,取天下易如反掌。现在乘虚进入关中,号令天下,就可以成就帝业。”于是李世民开始秘密进行起兵准备。
当时,李渊与突厥作战失败,隋炀帝准备把他招到江都(今江苏扬州)治罪,李世民乘机劝说李渊起兵。他说:“现在隋炀帝荒淫无道,百姓穷困,太原城外已是烽烟四起,如果您只知道效忠隋朝,那么既有不能平定农民起义的忧虑,又有被隋炀帝治罪的恐惧,恐怕要大祸临头了。不如顺民心,兴义兵,您就能够转祸为福了。”听了世民的主张,再加上其他谋士的劝说,李渊渐渐地坚定了起兵反隋的决心。公元617年6月,李渊命刘文静假造隋炀帝的诏书,伪称要征发太原、西河(今山西汾阳)、雁门(今山西代县北部)等地,派李世民、刘文静等到各地募兵,召集到一万余人。另一方面隋炀帝为了东征高丽,搞得人心惶惶的,更加深了李渊反抗隋朝的情绪。
太原的两位副留守,其实是隋炀帝派到太原来的耳目,专门监视李渊等人的行动。现在看到李渊招兵买马,就心存疑虑,准备告发。正巧这年太原大旱。一天,李渊要前往晋祠,为民求雨。两位副留守准备借晋祠祈雨之际,捉拿李渊父子及其亲信,没想到竟弄巧成拙。李渊先发制人,伪称二人与突厥暗中勾结,结果,两人反而成了冤死鬼。然后,他们联合突厥势力,依靠关陇、河东地主集团的力量,尊称隋炀帝为太上皇,拥立代守长安的杨侑为帝。李渊令长子建成为左军大都督,次子为右军大都督,率领招募的“义兵”,从太原誓师出发,进军长安,四儿子元吉则留守太原。
同年七月,李渊和长子建成、次子世民率三万人马,沿汾水河谷南下,到达霍邑(今山西霍县)。适逢大雨,大军不得不停下来。另据探子报告,隋炀帝已急派虎牙郎将宋老生率两万精兵镇守霍邑,又遣左武侯大将军屈突通屯驻河东,一起阻止唐军的前进。此时,军中又流言四起,说原隋将刘武周勾结突厥,乘太原空虚,想要偷袭。
李渊被这些凶信搅得心神不宁,进退两难,于是急忙召集众将商量对策。长史裴寂建议道:“大将军,看来只有撤军了。”但建成和世民二人坚决反对。李渊一时拿不定主意,紧锁双眉,摆摆手说:“那么都回去吧,这件事要从长计议。”过了两天,中军传出命令:撤回太原,左军先行,右军过两个时辰跟上。于是,李建成无可奈何地准备率兵先撤。
李世民望着没精打采的士兵,想着前途,不禁一阵酸楚,忍不住放声大哭。哭声惊动了李渊,于是,世民又把利害关系向李渊仔细分析,一步一步地打消了他的疑虑。李世民的意思是:现在正是收获的季节,何必担心粮食不够;霍邑的守将只是一个武夫,有勇无谋,不足挂齿。如果不尽快攻下长安,夜长梦多,妄图攻取长安的人马会越来越多,今后就不会再有这样的机会了。听了世民的哭谏,李渊也恍然大悟,又决定继续作战。
八月初,天气转晴,军粮也运到了,李渊亲自带兵逼近霍邑城下,向宋老生挑战。守城的隋将纷纷要求出战,宋老生拿不定主意。而霍邑县令建议他守为上策。宋老生看见李世民与一帮人围着城墙指手画脚,仿佛在商量围城对策时,他冲着县令叫道:“我留一万人马让你‘守为上策’吧,我要活捉李世民!”县令来不及阻拦,宋老生已带着一万人马冲出城门,没想到,到了城外,却不见了李世民。
城外统领唐军的李渊和李建成,见宋老生出城应战,便率领大队人马,杀向宋老生。刚一开战,唐军就败下阵来,往城南退去。这时候,李世民已带领一支人马,埋伏在城南的一座高土城的后面。看见宋老生的军队一路追来,李世民发号出击,于是拦腰斩断了隋军队伍。隋军大乱,李渊、李建成和李世民两头夹击,杀得隋军落花流水,宋老生也惨死战场。守城隋军见主将已死,顿时弃城逃散。就这样,唐军轻松地攻下了霍邑城。随后唐军势如破竹,连续攻下临汾、绛郡、龙门。之后又开始进攻河东(今山西永济),在河东,由于隋将屈突通的坚固防守,久攻不克。裴寂认为应该不惜任何代价攻下河东,然后再进入关中。李世民则认为兵贵神速,应该直捣关中。这两种意见都有道理,如果不消灭屈突通,可能会前有长安隋军,后有屈突通的隋军,李渊就会腹背受敌;如果一直围攻河东,关中隋军就有可能做好充分准备,李渊又会失去战机。李渊权衡两种意见,各取其长,兵分两路,留部分将士转攻河东,牵制屈突通,自己率领李建成、李世民大军攻取长安。
长安很快被攻克,为了争取和拉拢隋朝的一些地方势力,减少敌对力量,李渊立隋炀帝长子杨昭之子、代王杨侑为帝,就是隋恭帝。恭帝即位,改年号为义宁,并且,遥尊逃到江都的隋炀帝为太上皇。这充分表明李渊具有老谋深算的政治经验。因为立恭帝,既承认了隋朝仍然存在,又等于取消了隋炀帝的皇帝的合法地位。这些举措为推翻隋室江山,建立唐朝打下了基础。