隋煬帝楊廣即位后,統治殘暴,揮霍無度,濫用民力,好大喜功,對外連年發動戰爭,造成經濟崩潰,社會動蕩不安。在沉重的壓迫和剝削之下,民眾無法生活下去,被迫鋌而走險,奮起反抗。農民起義的怒火,燃遍神州大地。到1617年初,形成了李密、竇建德、杜伏威3支強大的起義軍,分別活動在今河南、河北、山東和江淮一帶,大量殲滅隋軍,隋統治集團及其軍隊主力被阻隔于江都(今江蘇揚州市)、洛陽、長安(今陜西西安)三個據點。一些貴族和地方官吏看到隋已分崩離析,也乘機而起,占領州郡,建立割劇政權,稱王稱帝。其中有朔方(今陜西橫山西)梁師都、馬邑(今山西朔縣)劉武周、金城(今甘肅蘭州)薛舉、武威(今甘肅武威)李軌、巴陵(今湖南岳陽)、羅川(今湖北宜城)的蕭銑等等。原來臣屬于隋的突厥也趁機奪取隋王朝的北部地區,整個中國處于四分五裂的狀態。
在這種形勢下,隋朝大貴族、太原留守李淵父子于617年5月15日在太原起兵。為了迅速發展壯大勢力,奪取隋政權,采取了以下軍政謀略:以擁隋舉義為旗號,北聯突厥,東結李密,乘虛入關,"據險養威",占據形勝之地,積蓄力量,然后伺機奪取天下。其著眼點首先在于奪取關中。關中是隋都長安的所在地,物產豐富,人口眾多,進可攻,退可守,是"據天下之上游,制天下之命"的戰略要地。奪取關中既便于代隋自立,又利于東向以爭天下。而當時關中隋軍兵力空虛,使李淵有機可乘。為此,北聯突厥,可以牽制劉武周南下晉陽(今太原);東結李密,可以使洛陽王世充隋軍主力被牽制于崤函以東不得西援。由此可見,這是一個適合當時形勢的積極進取而又比較穩妥的戰略決策。
617年4月,李淵決定進軍關中,以長子李建成率左軍,次子李世民率右軍,四子李元吉留守太原。隋鎮守長安的代王楊侑派將宋老生率兵2萬屯于霍邑(今山西霍縣),屈突通率精兵數萬扼守河東(今山西永濟西)以阻止李淵西進。李世民率部擊敗宋老生,攻占霍邑。然后進圍屈突通。由于屈突通憑堅固守,李淵屢攻不下,于是采納部下建議,留一部兵力繼續圍攻,自率主力從龍門渡過黃河,進入關中,隋朝官吏紛紛獻地歸附,會集于長安周圍的李淵父子兵力達到20萬人。10月27日,李淵下令各軍攻城,11月9日占領長安。12月又迫使河東的屈突通軍投降。李淵父子起兵不到半年,就攻下了隋都長安,占據了關中和河東廣大地區。
李淵入據關中以后,分兵出擊,迅速拓地至秦、晉、蜀廣大地區,并使之連成一片。618年3月10日,隋煬帝楊廣在江都被大將宇文化及所殺。5月20日,李淵在長安稱帝,建立唐朝。唐建立之初,專注于鞏固關中,把用兵重點放在對其威脅較大的朔方梁師都和隴西的薛舉,而對洛陽方面則暫取守勢。
占據朔方的梁師都多次向唐軍進攻,因力量不大,均被擊敗。對唐威脅最大的是占據隴西地區的薛舉。618年6月10日,薛舉率軍進攻涇州(在今甘肅涇川北),李淵以李世民為元帥,令其率8總管兵迎戰。7月,薛舉進逼高塨(今陜西長武北)。因李世民得病,部將違背深溝高壘堅壁不戰的方針,輕率出戰。7月9日在淺水原(今陜西長武東北)展開激戰,唐軍8總管皆敗,士卒死者十之五六,李世民被迫率兵撤回長安。此時薛舉病死,其子薛仁杲繼位。8月17日,李淵又派李世民為元帥進攻薛仁杲,進駐高塨。李世民認為唐軍新敗,士氣尚未完全恢復,決定堅守高塨,養精蓄銳,待薛軍恃勝而驕,然后出戰破敵。雙方相持60余日,至11月,薛軍糧盡,士氣低落,李世民看到時機已經成熟,派兵一部布陣于淺水原引誘薛軍,自率主力直搗敵后。薛軍受到兩面夾擊,大敗而逃。唐軍乘勝追擊,將薛仁杲包圍于折塨(今甘肅涇川東北)。11月8日,薛仁杲被迫投降。不久,李淵又迫降了河西的李軌,控制了秦隴大部分地區。
唐統一關隴地區不久,劉武周率兵南下進襲太原,威脅唐軍后方基地。李淵立即命令李世民率師東進,迎擊劉武周軍。駐守太原的李元吉,整日里畋獵游樂,置戰事于不顧,導致戰事接連失利。619年9月16日,李元吉在劉武周的不斷進擊下,棄城逃往長安,太原遂被劉軍占領。劉武周占領太原后,派大將宋金剛繼續向西南進軍,攻陷唐不少州郡,一時關中震動。11月李世民率軍自龍門渡過黃河,屯軍柏壁(今山西新絳西南),與宋金剛相持。鑒于宋金剛懸軍深入、兵鋒甚銳等情況,李世民決定采取養精蓄銳、分兵襲擾、待敵疲糧盡再伺機攻擊的方針。宋金剛同唐軍在柏壁相持半年,饋運不繼,軍中缺糧,于620年4月14日向北撤退,唐軍跟蹤追擊,窮追猛打,宋金剛部傷亡殆盡。劉武周、宋金剛逃往突厥,后均被突厥殺死。柏壁之戰的勝利,使唐全部收復了被劉武周攻占的河東太原等州郡,控制了太行山以西至黃河間腹地,對屏障長安,鞏固關中,并為爾后爭奪中原奠定了基礎。
唐軍收復太原擊敗劉武周后,李密的瓦崗軍已經解體。這時剩下的有河北竇建德和洛陽王世充集團,占據黃河、淮河間的廣大地區;江淮地區為杜優威的起義軍所占;蕭銑集團則控制了長江中游及粵、桂等地。
李淵為奪取中原,采取遠交近攻,先王后竇,各個擊破的戰略,一面拉攏竇建德,使之保持中立,一面令李世民率軍出潼關進攻東都洛陽。620年7月1日,李世民率總管25將約10余萬眾進擊東都,王世充聞訊,不斷加強洛陽城廓和外圍要點的防守。9月,各路唐軍先后攻克洛陽外圍要點,形成了對洛陽的包圍。10月初,王世充見唐軍圍洛陽益急,遣使求救于竇建德。竇建德一面許以發兵,一面勸說李世民解圍,李世民置之不理。由于久攻不下,唐軍改用掘壕筑壘,圍困洛陽。621年3月,在王世充的連連告急下,竇建德親率10萬大軍西援洛陽。李世民決定攻城打援,將兵力一分為二,令李元吉、屈突通繼續圍洛陽,自率精兵屯駐于虎牢(今河南滎陽西北汜水鎮)。竇軍被阻于虎牢東月余不得西進,幾次交戰又都失利,士氣開始低落。5月2日,竇軍在汜水東岸布陣,北依大河,南連鵲山,正面寬達20余里,擺出進攻虎牢的陣勢。唐軍嚴陣以待,使竇軍無隙可乘。竇軍列陣,自辰至午,士卒饑疲,皆有歸營之意。李世民見機派兵一部前往挑戰,自率騎兵先出,主力繼進,過汜水后直撲竇建德大營。竇軍措手不及,被迫向東撤退。唐軍追擊30余里,俘獲5萬余人,竇建德負傷被俘,其余部隊大部潰散。唐軍虎牢獲勝后,主力回師洛陽。王世充見竇軍被殲,意欲突圍,南走襄陽。但諸將信心已失,5月9日獻城投降。
虎牢之戰后,唐奪取了中原的主要地區。同年9月,又派兵從巴蜀順江東下,消滅了蕭銑軍。623年,鎮壓了竇建德部將劉黑闥的起義軍,占領了全部河北地區。624年,又鎮壓了杜伏威部將輔公祏的起義軍,占領了江南地區。至此,唐統一了全國。