秦王李世民赶走刘黑闼后,移军讨伐徐圆朗。正要攻打兖州,忽然朝廷使臣来到,命他赶紧回京,李世民就将军事委托给了齐王李元吉,自己赶回长安。等拜见完高祖,详细说明了攻打徐圆朗的有利条件,李渊才同意攻打。于是大军接连攻下十多个州城,声振淮泗。不料李渊又下诏书,令李世民班师还朝。李世民不敢违抗,只好让淮安王李神通和行军总管李世绩留下来进攻兖州。
刘黑闼借到突厥的兵马,长驱南下杀回山东。淮安王李神通不得不移兵防御,幽州总管罗艺也奉诏援助。可是刘黑闼的部下异常凶猛,再加上旧部将曹湛、董康买等人也来助战,所以刘黑闼顺利地攻下了定州,继而攻陷瀛州,唐朝刺史马君武被杀。李神通知道自己不是对手,急忙回朝搬兵求救。李渊诏令淮阳王李道玄为河北道行军总管,会同行台民部尚书史万宝共同讨伐,又命令齐王李元吉作为后应。李道玄才十九岁,冒险出击,中了刘黑闼的埋伏,经过一番惨烈厮杀,终因寡不敌众吐血身亡。
李道玄败死后,山东的守军跑的跑,降的降,不到半个月,刘黑闼又收复了旧地,仍然占据洺州作为都城。齐王李元吉和淮安王李神通不敢前进,高祖本想派李世民出征,心中却有些迟疑,只好一天一天地拖延。正巧太子李建成主动请命东征,李渊这才高兴起来,立即封他为山东道行军元帅,征讨刘黑闼。李建成高高兴兴地出发了。
这其中另有隐情。原来,秦王李世民屡建奇功,被封为天策上将,位居其他王公之上,手下设置了一批官吏。李世民广交文豪,一共得到十八位,全都封为文学馆学士。这十八人包括杜陵人杜如晦、临淄人房玄龄、余姚人虞世南、钱塘人褚亮等。十八个学士分为三班,轮流值班。李世民闲暇时常到馆中讨论文章,彻夜不眠,又让阎立本画像,褚亮作赞,当时人称“十八学士登瀛州”,说的就是这段故事。
太子李建成和齐王李元吉暗暗妒忌李世民。当初高祖起兵时曾打算立李世民为太子,但李世民再三推辞,这才册立了李建成。李建成沉迷酒色,又好游猎,李元吉比他哥哥更是有过之而无不及,高祖屡次训斥这两个儿子,并且有了另立太子的意思。李建成非常害怕,就与李元吉合谋加害李世民。高祖晚年有很多嫔妃,这些嫔妃生的儿子不下二十人。其中的张、尹二妃,就是当初晋阳宫内的两个美女,她们妖柔善媚,深得高祖欢心。尹妃生了个儿子叫元亨,封为酆王;张妃生了个儿子叫元方,封为周王。李建成、李元吉特别善于讨好后宫嫔妃,无微不至。只有李世民不屑于和宫中的人结交,就是遇着二位王妃,也不过作个揖罢了,所以后宫里面全都称赞李建成、李元吉,不喜欢李世民。那尹、张二妃又整天吹枕边风,说李建成、李元吉的好话,进李世民的谗言。李渊宠爱二妃,于是渐渐地亲近李建成、李元吉,越来越疏远李世民了。李世民东征讨伐徐圆朗时,一会儿召回一会儿派走,无非是怀疑的缘故。
太子中允王珪和洗马魏征也担心李世民功高,会夺了太子之位,于是劝李建成道:“秦王功盖天下,深得人心,殿下只是因为名分居长才立为太子,此时如果不立大功,恐怕不能镇服天下。如今刘黑闼劫后余生又占据山东,人马不多,人心不稳,殿下可主动请战出征,一来可以讨平残匪,取得功名,二来可以结识山东英雄作为臂膀,这样您太子的地位也就安稳了。”李建成于是按照计策请求出征,魏征等人随同前往。途中接连传来相州、桓州被攻陷的消息,李建成有些胆怯。幸好后来魏州总管田留安传来捷报,说已经击破刘黑闼,擒住了莘州刺史孟柱,收降敌兵六千人,李建成这才放心进兵。路上,齐王李元吉率兵赶到。两军会合后向魏州进发。这时的山东州县大多已投降了刘黑闼,只有田留安对唐朝忠心耿耿,他曾经对手下道:“你我一起为国杀贼,应该同心协力,如果你们谁想投降,可以砍了我的脑袋,自己去求得富贵。”官兵听了这话,全都痛哭流涕,誓死报国。其中刘黑闼的旧党苑竹林想造反,田留安察觉后,好言劝慰,还委托他掌管钥匙。苑竹林因此感激不尽。刘黑闼连攻田留安多次,都被田留安击败。
李建成、李元吉来到昌乐,刘黑闼领兵来攻,两军对峙。魏征对李建成道:“上次攻破刘黑闼后,所有贼将都被我们处死了,妻儿老小也都被抓进了大牢。那些残兵败将没了指望,所以都甘心为刘黑闼卖命。如今我们可以把他们的家眷全部释放,让那些残兵败将看到希望,想必他们就不会再追随刘黑闼自投死路了。这样他们必然军心离散,刘黑闼也就无能为力了。”李建成立即按魏征的话去办,果然刘黑闼的部下一天天地散去。再加上粮食吃紧,无法再支持,刘黑闼趁夜逃走,跑到馆陶永济桥。当时,桥还没建好,李建成、李元吉率领大军眼看就要追上,刘黑闼连忙命令王小胡迎战,自己指挥军兵火速造桥。等到桥建得差不多了,刘黑闼慌忙催马逃走,手下大乱,多半放下武器投降大唐。唐军过桥追击刘黑闼,才过了一千多人,桥突然崩坏,刘黑闼带着几百骑兵侥幸逃走。李建成收兵回营,派骑将刘弘基率领一万多人继续追击刘黑闼。刘黑闼昼夜奔走,不敢休息。等到了饶阳,手下只剩下一百多人,全都饥肠辘辘。饶州刺史葛德威开城出迎,并给他们安排了酒菜。刘黑闼喜出望外,正狼吞虎咽的时候,葛德威引兵到来,一声大喝,把刘黑闼等人团团围住,全部活捉,然后送到李建成的大营。李建成有心将刘黑闼送回长安,又恐中途被劫,于是将刘黑闼兄弟等人一律就地斩首。刘黑闼临刑前感叹道:“我本来在家锄菜,却被高雅贤之辈所骗,招致杀身之祸呀!”刘黑闼一死,徐圆朗、高开道等贼人都吓破了胆,很快就都被剿灭。
罗艺和杜伏威因为惧怕唐朝的威势,先后入朝称臣,高祖封罗艺为左翊卫大将军,封杜伏威为太子少保,兼任行台尚书令,都暂时留在京师。杜伏威在南方时和辅公祏交情很深,亲如兄弟,后来杜伏威被封为吴王,辅公祏也被封为舒国公。杜伏威任命养子杜阚稜为左将军,王雄诞为右将军,提升辅公祏做了仆射,表面上是尊重辅公祏,其实是暗中夺了他的兵权,让两个儿子监视他。辅公祏深知杜伏威的意图,假称要学道练习辟谷,借这个由头韬光养晦。杜伏威去了京师后,辅公祏留守丹阳。杜伏威委任王雄诞掌握兵权,并且秘密嘱咐王雄诞:“我到长安后,如果不降职,你一定要提防辅公祏兵变。”王雄诞点头答应。哪知杜伏威一走,辅公祏就趁着王雄诞生病的机会发兵到他府上,把他拿下勒死。辅公祏又诈称杜伏威回不来了,大造铠甲武器,储备粮草,居然自称宋帝,派部将徐绍宗侵袭海州,从此起兵造反。
李渊听说后,当即命令赵郡王李孝恭率领水军剿匪,又派岭南道大使李靖率领交广、泉桂步兵奔赴宣州,怀州总管黄君汉出兵谯亳,齐州总管李世绩出兵淮泗,四路会师,共同讨伐辅公祏。李孝恭出发之前和众将摆宴誓师,命令手下人取水,水忽然变成了血色,众将都大惊失色。李孝恭却谈笑自若,对众将道:“这是辅公祏要掉脑袋的预兆,是件好事,有什么可怕的?”于是调集战舰,当天出发。半路上接到捷报,说是安抚使李大亮已经成功诱捕善安,并将他送往长安。李孝恭高兴地对众将道:“辅公祏已经失去左膀右臂,我们更可以无忧了。”
李孝恭连破辅公祏守兵,一举攻下鹊头镇,接着又攻下樑山等三镇。辅公祏派部将冯慧亮、陈当世等人带领三万水军把守博望山,又派陈正通、徐绍宗率领三万步兵把守青林山,再把梁山下面的江路连接上铁索,阻断往来的船只,并在两岸筑起壁垒,形成一道大屏障。李孝恭和李靖进兵舒州,李世绩带步兵接连攻下寿阳、硖石,守军冯慧亮等人坚守城池不敢出战。李孝恭派奇兵断了冯慧亮的粮道,敌营缺粮,半夜出来袭击李孝恭大营,李孝恭早有防备,还了他一碗闭门羹,敌军无奈只好回去。第二天,李孝恭召集众将议事,众将都说:“冯慧亮等人拥兵据险,急攻未必攻得下来,不如绕道丹阳,捣他的巢穴。丹阳一破,冯慧亮等岂不乖乖投降?”李孝恭正要按大家的意思下令,李靖却阻拦道:“虽然辅公祏的精兵多在这里,但老家的守城兵将想必也不弱,我们在这里尚且不能取胜,辅公祏那里高筑石头屏障,难道反而容易攻破吗?如果我军进攻丹阳,十天半月攻不下,冯慧亮等人抄我后路,我们腹背受敌,岂不危险?依我看,冯慧亮等人现在是以逸待劳,目的是想让我们久攻而疲惫,趁懈怠时来袭击。不如我们先用老弱残兵引诱他们出来,然后再派精兵猛攻,必定可以一举荡平贼人。”说到这,正赶上杜伏威的部将杜阚稜到来,李孝恭马上派人把他迎进来。原来杜阚稜随杜伏威到京师后,被封为越州都督。后来,杜伏威在京师病死,李渊任命杜阚稜为抚绥部曲,来援助讨伐辅公祏。李孝恭大喜,当下按照李靖的计策,先让一队老弱残兵假装攻打贼人的壁垒,自己带领精兵集结,在后面等待出击。敌兵果然追来,追了一里多地,李孝恭的大军忽然从天而降。敌人知道中计,只好硬撑着交战,忽然见杜阚稜从唐军中冲出,对敌军喊道:“你们还认识我吗?敢和我交战吗?”敌军多是杜阚稜的旧部,自然倒退,有的居然伏身下拜。唐军趁势杀出,敌将还想拦截,怎奈部下已经没了斗志,纷纷逃走,敌将再怎么骁勇,到现在也只能跟着败退下去。李孝恭和李靖乘胜追击几十里,杀敌不计其数。博望、青林两城的守军也全部逃散。李靖直抵丹阳,吓得辅公祏胆战心惊,也没心思固守了,偷偷地带了家属从后门溜出,领着几千残兵败将狼狈逃走。