当时秦王李世民在洛阳进攻王世充,窦建德的中书舍人刘斌对他分析说:“现在唐国占据关中,郑国占据河南,我们占据河北,这是鼎足三立相互对峙的局势。听说唐用全部兵力攻打王世充,连头连尾两年时间,郑的形势一天比一天紧急,而唐的围攻毫不放松。唐的兵力强、郑的兵力弱,发展趋势必然是打败王世充,王世充被打败,那么我们就有唇亡齿寒的忧虑。为您着想,不如援救王世充,王世充在里边抵御,我们在外边进攻,打败唐军是一定的了。如果打走了唐军保全了王世充,这是长期保持鼎足三分局面的战略。如果唐军被打败后,王世充也可打败,那么就乘机消灭他,集中我们和王世充的兵力,乘着唐军战败的时机,直向西打,长安就能到手,这是平定天下的基础。”窦建德非常高兴说“:这才是好谋略啊。”恰好这时王世充派遣使者向窦建德要求出兵援救,就派遣职方侍郎魏处绘到长安朝见唐高祖,请求解除对王世充的包围。
武德四年(621年)二月,窦建德攻克周桥城,俘获孟海公,留下部将范愿守卫曹州,带领孟海公和徐圆朗的全部人马来援救王世充。军队走到滑州,王世充的行台仆射韩洪打开城门迎接,于是进逼元州、梁州、管州,都打下了,聚集在荥阳。三月,秦王到了武牢,接近窦建德的军营,杀伤杀死不少的人,并捉拿了他的部将殷秋、石瓒。当时王世充的弟弟王世辨任徐州行台,派遣他的部将郭士衡带领几千人跟随窦建德,集中人马十多万,号称三十万,军队驻扎在成皋,在板渚修建营房,以示决战。又派遣密使约定王世充里外夹攻。经过两个月的战斗,逼近武牢,就不能继续前进。秦王派遣将军王君廓带领轻装骑兵一千多人绕到窦建德的背后袭击他的运粮队伍,捉住大将张青特,俘虏士卒很多人。
窦建德多次失利,人心惊恐不安,上到将帅,下到士卒,打败孟海公时,都有收获,想回洺州。凌敬提议说:“应当全军渡过黄河北上,攻占怀州河阳,安排主将镇守。再率领大队人马击鼓举旗,跨越太行山,开进上党县,虚张声势隐藏目的,不必麻烦作战。加速赶到壶口,逐渐惊扰蒲津,夺取河东土地,这是上策。实行这个方针定有三条好处:一是到无人防守的地方,军队万无一失;二是扩大地盘招募兵卒;三是唐军对王世充的包围自己就会解除。”窦建德准备采纳这个建议,但是王世充的使者长孙安世私下送给金银珠宝利诱各个将领,来扰乱他的决策。各个将领全都劝谏说“:凌敬不过是个书生,怎能跟他谈打仗呢?”窦建德听从了他们的意见,回头向凌敬道歉说:“现在群臣振奋,这是老天助我。凭这决战,必定会大获全胜。我已听从了大家的意见,不能照您的话办了。”凌敬坚持争辩,窦建德很生气,强制撑持着走了。他的妻子曹氏又对窦建德议论说:“祭酒凌敬的意见可以采纳,您为什么不采纳呢?请您沿着滏口那条路,乘着唐朝兵力空虚,集中兵力加速前进,以便夺取山北的土地,再凭借突厥的力量向西包抄关中,唐朝廷必然招回军队保卫自己,那么对王世充的包围就解除了。如今部队滞留在武牢城外,时间拖得长了,白白地自己劳苦自己,事情只怕办不成。”窦建德说:“打仗不是女人过问的事。再说郑国命在旦夕,等待我们快去,既然答应援救他们,怎能碰上困难就退走,向天下表明我们说话不算话呢?”于是全部人马压向武牢,唐军按兵不动以挫伤窦建德的锐气。
战败身死
等到窦建德把人马聚集在汜水,秦王派遣骑兵去挑战,窦建德发兵进攻,秦王派窦抗抵挡。窦建德渐渐后退,秦王派遣骑兵冲进敌阵,反复鏖战四五次,最后大败窦建德。窦建德被枪刺中,逃跑到牛口渚,车骑将军白士让、杨武威活捉了他。在这之前,部队里头传开童谣说:“豆入牛口,势不得久。”窦建德走到牛口渚,非常憎恶它,果然失败在这个地方。
窦建德被俘后,李世民责备窦建德:“我征王世充,关你何事,你越界而来,冒犯我军士的锋锐!”建德说:“今日不自己来,恐怕有劳你远取。”王世充遂开城投降,裴矩以洺州降唐。