武德二年(公元 619年),依附突厥、被封为定杨可汗的刘武周率军南下,进逼太原。唐并州都督李元吉弃城逃至长安。刘武周占太原后,派宋金刚沿汾河南下,进逼绛州(今山西新绛),攻陷龙门,震动长安。唐高祖准备放弃河东。世民不同意,要求领精兵 3万,歼灭刘武周,收复汾、晋。十一月,世民率军乘冰坚渡黄河,屯兵柏壁(今山西新绛西南),与守绛州的唐军成椅角之势,同宋金刚军相持。诸将请战,世民说:“金刚孤军深入,兵精将猛,无积蓄,靠掳掠补给,利在速战。我闭营养精蓄锐,同时分兵骚扰其后方,他粮尽计穷就要逃跑。应当等待这个战机。”次年四月十七,宋军粮尽,乃以寻相部为后卫北撤。世民率军跟踪追击,在吕州(今山西霍县)大败寻相。世民命令乘胜猛追。总管刘弘基又抓住世民的马缰劝世民休整部队,等后续部队到后再进军。世民不听,率部一昼夜行军二百里,在雀鼠谷(今山西介休西南)追上宋军,一日八战皆胜,俘斩数万人。至此,世民已两天未吃饭,三天未解甲。世民追至介休。宋金刚尚有兵 2万,乃出西门,背城布阵,准备与唐军决一死战。世民命总管率部出击,自率精骑抄宋军阵后。宋金刚遭两面夹击,大败而逃。
世民追至张难堡,与守堡唐军会合。随后,他派人去介休说降寻相和尉迟敬德。刘武周和宋金刚逃至突厥,后为突厥所杀。三年七月,在平定西北后,世民奉命率军东进,攻击在洛阳称郑帝的原隋将王世充。世民派诸将首先扫清洛阳外围,至四年二月,将王世充围于洛阳孤城。王世充向在河北地区称夏帝的窦建德求援。三月,窦建德率军 10万西救洛阳,连克管城(今河南郑州)、荥阳(今属河南),进至虎牢(今河南荥阳汜水镇)以东,同时给世民写信,要求他退回潼关。世民召集诸将研究对策。屈突通等认为,为避免腹背受敌,应撤围洛阳,至新安(在洛阳西)待机。但记室薛收认为,如让王、窦合流,战争就会延长,统一将遥遥无期。他建议以一部围困洛阳,由世民率精锐迎战窦建德,“建德既破,世充自下,不过两旬,两主就擒矣”。世民很欣赏他的建议,决定留齐王元吉围困洛阳,自率精兵 3500人为前锋赶到虎牢阻击窦军,大军随后跟进。世民至虎牢,亲率李?、程知节、秦叔宝等骁将及精兵 500骑出虎牢东二十里对安营进行武力侦察。李世民沿途设伏,自率尉迟敬德等共四骑至距窦营三里处同窦军游动哨遭遇,射杀窦军一将。窦军出数千骑追击。世民且战且退,沿途伏兵四起,阵斩 300余人而归。窦军初战失利,加上虎牢地形险要,与唐军相持月余不能前进,将士都思念故乡。不久,世民得到情报:窦军将乘唐军在黄河北岸放牧时袭击虎牢。五月初一,世民将计就计,率军过河,在黄河边放了 1000多匹马,然后悄悄撤回虎牢。初二清晨,建德果然倾营而出,在汜水东列南北长二十里的军阵,打着鼓西进。世民率数骑登高坡观察,决定等窦军疲惫后再发动攻击。至中午,窦军将士疲惫都坐在地上,有的到河边喝水。世民先派 300骑掠窦军之阵进行试探,见窦军阵中已乱,乃东涉汜水,猛烈进攻窦军。建德此时正聚集群臣开会,唐军冲来,顷刻大乱,溃败。唐军追击三十余里,歼 5万余人。窦建德负伤被俘,夏政权消灭。世民回师洛阳,将窦建德带到洛阳城下给城头的王世充看,王被迫出降。郑政权随之被灭。此战为统一全国奠定了基础。
在统一全国的战争中,世民功勋和势力远远超过建成,但因是次子不能继承皇位。建成亦知世民不甘居他之下,于是联络元吉,同世民展开明争暗斗。九年六月四日,世民发动“玄武门之变”,杀建成和元吉,迫高祖立己为太子,八月即帝位,是为唐太宗。次年改元贞观。四年(公元 630年),平定东突厥,被北方各族尊称为“天可汗”。九年,平定吐谷浑,十四年,平定高昌,随后在交河(今新疆吐鲁番西)设安西都护府,使西域各国摆脱西突厥的控制。十五年送文成公主人吐蕃同松赞干布和亲,增强了汉藏人民友谊。他在位 23年,注意接受隋亡的教训,居安思危,兼听纳课,任人惟贤,实行轻徭薄赋,宽平刑罚,社会安定,生产发展,人民安居乐业,史称“贞观之治”。