这场一举歼双雄的战役从公元620年七月开始,一直持续到第二年的五月。当时,王世充刚刚经历过与李密的一场恶战,虽然取得胜利,但已元气大伤。李世民率部东征,经过几次较量,将王世充紧紧压制到洛阳城里,使洛阳成为一座孤城。围困半年后,眼看王世充就要弹尽粮绝,就在这时,窦建德率10万大军南下救援王世充。
当时李世民的军队也是相当疲劳了,面对腹背受敌的险境,怎么办?李世民果断地否决了部分将士要求撤退的建议,而是实施围城打援的战略,即留一部分军队继续围困洛阳,他本人则率主力北上,占据易守难攻的虎牢关,截住窦建德部。与窦建德的较量,几乎就是一场耐力战,就看谁能坚持。当时,窦建德希望越早决战越好,李世民却不予理睬,只在暗地里寻找最佳的战机,如此一直僵持到621年的四月。
有时主动权的变易往往只是一念之间,就在窦建德屡屡挑战而不得、有所松懈时,李世民的军队突然发起进攻,将其打了个措手不及,导致全面崩盘,窦建德被活捉。随后李世民军押着窦建德走到洛阳城下,王世充见大势已去,只得举城投降。
这场战役是唐朝统一全国的决定性战役,李世民以此被父亲封为“天策上将”。此前,他已经被封为“秦王”,“天策上将”的封号,意味着在军功方面,他已无人能及。但是,“天策上将”哪有“皇太子”的称谓好啊,所谓“功高震主”,他“震”不了唐高祖,却要来“震”一“震”大哥李建成了。