刘文静被杀后,李世民和李建成、李元吉表面上兄弟情深,来往密切,但暗地里争斗得更加激烈。李建成和李元吉甚至动用后宫的势力,伙同李渊的妃子诽谤李世民。李渊听信谗言,要治李世民的罪,幸亏陈叔达苦谏说:“秦王对国家有那么大的功劳,怎么能随便贬黜他?况且秦王生性刚烈,如果把他贬黜了,他肯定心中苦闷,若因此长期抑郁而得病,那陛下后悔也就来不及了。”李渊听了陈叔达的规劝,才没有将李世民治罪。虽然没有治罪,但是这个事件引起了秦王府所有幕僚的恐慌。武德九年(626)六月,太子请秦王去府上饮酒,可是秦王在喝酒后心口疼,还不停吐血,在李神通的搀扶下才回到秦王府。这更加加重了秦王幕僚的恐惧心理。
看到这个情形,房玄龄对长孙无忌说:“现在,秦王和太子的矛盾已经越来越明显了,一旦发生什么事情,不仅仅是秦王府被铲平,更严重的是江山社稷有可能被毁,与其坐以待毙,还不如劝秦王殿下像周公那样行大道义,主动出击,这样才有机会!”长孙无忌非常赞成房玄龄的话,回答说:“我思考这个问题已经很久了,和你观点一致,但是没有机会告诉秦王,今天你说了这话,那我们一定要劝说秦王。”于是他们就去找秦王将自己的见解阐述给李世民听。李世民问:“按你们的意思,那我该怎么办?”房玄龄说:“秦王殿下南征北战荡平天下,功劳最大,应该继承皇位!现在的局势非常危险,殿下您不能有稍微的迟疑,越早决断越好!”事后,房玄龄又和杜如晦召集谋臣一起再次劝说李世民尽早除掉太子李建成和齐王李元吉。其实,房玄龄和杜如晦、长孙无忌等人的主张和李世民的想法完全一致,但是要马上行动,李世民还心存疑虑,所以没有马上采取行动。因为李世民曾与灵州大都督李靖商量发动政变,李靖没有表态,和行军总管徐世绩商量,徐世绩也不置可否,而这个时候秦王府在较量中的确处于劣势,发动政变很难取得胜利。房玄龄、长孙无忌和杜如晦劝李世民果断地先发制人,才能转危为安,但李世民没有十足的把握,所以没有听取他们的意见。后来,房玄龄、杜如晦被太子借故逐出了秦府,长孙无忌就和舅父高士廉以及秦府将领侯君集、尉迟敬德等继续进行策划,等待时机。
这个时机,没有等太久,很快就到来了。武德九年,突厥数万骑兵突然进入边塞烧杀抢掠。如果按资历和能力,肯定由李世民率兵抵御。但是在朝会上,太子李建成极力主张齐王李元吉和李艺带兵出征,很明显,目的在于防止李世民掌握兵权。而李元吉故意在点将的时候特地点了秦王手下的将领尉迟敬德、程知节、段志玄和秦叔宝等一道去,想借此机会把秦府精兵转到自己手里。李世民当然知道这表象下的阴谋,回府后立即跟长孙无忌、高士廉、尉迟敬德、侯君集、张公谨等人商量。大家一致认为,形势危急,祸在朝夕,唯一的出路是先下手为强,没有任何犹豫的余地了。尉迟敬德说:“按照人之常情,人们都非常爱惜自己的性命,但是现在大家都愿意以牺牲性命的代价来尊奉您为皇帝,这是上天要把国家交给您!而秦王您有过多的顾虑,这非常不明智;大难临头还犹豫不决,这样优柔寡断不是您的风格,这样下去形势也将对您大大不利。”李世民这才开始表态,要找来房玄龄和杜如晦商议,为了刺激李世民,大家都撒谎说房、杜“不敢奉命”。李世民听了,竟勃然大怒,卸下自己的佩剑,交给尉迟敬德,要尉迟敬德拿佩刀再去找房、杜二人,说如果他们还不来,就“斩其首持来”。这个时候,李世民终于下定决心!尉迟敬德和长孙无忌等人找到房、杜二人,告诉他们秦王已经下定决心,决定发动政变,房玄龄和杜如晦赶紧穿上道士服,化妆后和长孙无忌等人一起到亲王府。经过一整个夜晚的商议,秦王李世民和他的幕僚做了十分周密的策划,最后决定在玄武门伏杀李建成和李元吉。这一天是武德九年六月二日。
玄武门即宫城北门,地位重要,是中央禁卫部队屯守之所。当时负责门卫的将领是常何。据常何墓志铭记载,此人在武德五年(622)底跟随李建成讨平河北,即平定刘黑闼第二次起兵。武德七年(624),常何已被秦王世民收买,担负玄武门的守卫之事。李世民还收买了玄武门的其他一些将领,如敬君弘、吕世衡等。
买通了玄武门的守将,李世民又到宫中告密,称太子李建成、齐王李元吉与尹德妃、张婕妤等后宫嫔妃淫乱,并说:“儿臣没有做过丝毫对不起兄弟的事情,但是太子和齐王却三番五次想杀儿臣,好像是为王世充、窦建德报仇一样。儿臣如果被冤枉杀死,和父皇永别,就算下了阴曹地府也耻于见那些叛贼!”听了李世民的话,李渊先是大惊,但还不敢相信,就说:“明天把他们传入宫中,再问个究竟。”就下令第二天太子、齐王一起早朝。
六月四日,李世民早早地率领长孙无忌、尉迟敬德、侯君集、张公谨、刘师立、公孙武达、杜君绰、郑仁泰、李孟尝等十人伏兵于玄武门。后宫的张婕妤探知世民的动静,立刻向太子李建成报告。得知这个消息,太子立刻找齐王商议,齐王李元吉说:“我们不如说有疾病暂时不上朝,看情况再做决定吧。”太子李建成说:“我也早已经准备好了兵马,我和你一起入宫,去探听消息。”显然,李建成也早就对京城的军事力量私自作了准备,而且就掌握军队人数来看,李建成占有绝对的优势,加上李建成以为旧属常何在玄武门,不会发生什么问题。所以,李建成很自信地和李元吉一道入朝。但是,李建成没有想到的是,城门守将常何早已经被李世民收买,而且,李世民早已经埋伏在玄武门。李建成和李元吉走到临湖殿的时候,发现情况不对,赶紧掉头回宫,但是李世民的人马早已经迎面而来。临湖殿在大内西北角北海池和南海池之间,而大内的东邻就是太子东宫。李建成入宫上朝,最方便的路线就是先出东宫北门,然后沿着城墙到玄武门,进玄武门向西到达临湖殿,而李元吉常常随太子一起进宫,走的也是这个路线。所以,李世民埋伏在玄武门是有深刻意义的。发现李世民的埋伏后,李建成和李元吉一边慌忙赶回东宫,一面还击。到了玄武门,李元吉掏出弓箭,连续射了三次,但由于太慌忙,没有射中任何人。李世民取出弓箭还射,李建成当场中箭身亡。这时,尉迟敬德率领七十个骑兵赶到,射中李元吉的马,李元吉下马往树林中逃走。李世民骑马追击,却不幸被树枝挂住了衣服,坠马落地。李元吉趁机上前,夺走李世民手上的弓箭,要用弓箭卡死李世民。千钧一发的时刻,尉迟敬德骑马赶来,李元吉看见敬德赶到便慌了神,终被尉迟敬德一箭射死。
也就是这个时候,东宫与齐府的两千多兵马猛攻玄武门,由于张公谨坚固的把守,最终没有攻陷。在这个战斗激烈进行的时候,李世民的妻子长孙氏也过来鼓励将士,同时,长孙氏的舅舅高士廉,放出了监狱中的囚徒,给他们兵器,带他们去支援李世民。在秦府僚属的全力抗击下,玄武门始终掌握在李世民的手里。最后,尉迟敬德提着太子李建成和齐王李元吉的首级,给东宫、齐府将士看。东宫、齐府将士看到自己的主人已经被杀,大势已去,纷纷投降。就这样,这场持续多年的皇子争夺战终于以李世民的胜利而结束。