武德七年(624)夏,李世民和李建成的斗争公开化。李建成开始积极地准备打击李世民的活动,他擅自招募了2 000余名士兵保卫东宫,甚至还派人至幽州招募突厥兵。事情败露之后,李渊勃然大怒,严厉斥责了李建成。然而李建成并没有就此罢手。他又派心腹杨文干募兵组建成一支军队,趁李渊巡幸行宫之际,打算谋反。此事很快传到了李渊耳中,他当下急召李建成前往行宫谢罪。消息走漏后,杨文干举兵谋反。李渊令李世民亲自率兵征讨,并许下了返回后即立他为太子的诺言。然而当李世民平定变乱回京后,李渊不但没有兑现诺言,对李建成的处理也是十分轻描淡写,仅仅是将隶属于东宫的若干名臣子流放了事。
李渊的纵容,使太子李建成更加肆意妄为。史书中记载了两起李建成意图谋害李世民的事件。一次是李渊父子在城南狩猎,李建成故意将一匹肥硕而容易受惊的马给李世民骑,结果李世民摔下来了好几次,幸而没有受伤。还有一次,李建成夜宴李世民,席间李世民突然胸口疼痛,吐血不止,后来被淮安王李神通及时搀扶回府,才捡回了一条命。
李世民率兵征战多年,势力主要在京外。李建成于是利用种种手段,不但将他困在京中,还要削去他的左右臂膀。李世民的谋臣房玄龄、杜如晦等人纷纷被谮告逐出秦王府,形势愈发严峻。高士廉、长孙无忌、尉迟敬德等人劝说李世民及早对太子建成动手。
武德九年(626)夏,突厥来犯。以往凡是突厥侵扰,都是李世民督军作战,此次李建成却提议令李元吉带兵出征,借此剥夺李世民的军权;并提出征调秦王府尉迟敬德、程知节、秦叔宝等大将,以削弱李世民的军事实力。李建成还和李元吉商议借饯行之机,斩杀李世民。这桩密谋被李建成的手下透露给了李世民。事态紧急,已到了你死我活的地步,李世民不再犹豫了。他与房玄龄、杜如晦等经过周密策划后,决定在宫城的北门玄武门伏击李建成。
武德九年(626)六月三日,李世民进宫入禀建成、元吉与后宫嫔妃淫乱。李渊令建成和元吉明日上朝自辩。六月四日晨,李世民带领长孙无忌、尉迟敬德等人埋伏在玄武门附近。
李建成、李元吉对此有所察觉,但是未知详情,又自恃守备森严,因此缺乏警戒之心。当他们驭马进入玄武门、发现不对劲时,李世民已经拍马过来。李元吉急忙开弓,但慌张之下弓弦未能拉开,三箭都没有射中。李世民引弓射箭,一箭射死了李建成。
尉迟敬德射中了李元吉的坐骑。李元吉弃马逃入树林中。李世民拍马追赶,不料衣服被树枝挂住坠马。力大无比的李元吉按住倒地的李世民,正要将他置于死地时,尉迟敬德及时赶来,杀死了李元吉。与此同时,李世民的亲军也与赶来的东宫亲军展开了激战,死伤无数,玄武门血流成河,史称“玄武门之变”。
玄武门之变后,李世民遣尉迟敬德入宫向李渊禀明太子李建成、齐王李元吉“作乱”,秦王举兵诛之一事。李渊对其中内情心知肚明,但是长子、四子已死,也无可奈何,只好下谕立李世民为太子。同年八月,李渊宣布退位为太上皇,李世民继位。次年(627)正月,李世民改元为贞观。此后,李渊又活了九年,直到贞观九年(635)才逝世。