窦建德布阵,从辰时到午时,士兵饥饿疲倦,都坐下来,又争着喝水,犹豫着想退却。李世民命令宇文士及率领三百骑兵经过窦建德军阵西面,向南奔驰而上,告诫他说:“贼军如果不动,你就带兵回来,如果动了就带兵向东出击。”宇文士及到了军阵前,军阵果然动了,李世民说:“可以进攻了!”这时在沙洲牧放的马也到了,于是命令出战。李世民率领轻骑兵先行前进,大军随后,向东涉过汜水,直逼窦建德军阵。窦建德的群臣正在朝谒,唐军骑兵突然到来,朝臣跑向窦建德,窦建德召骑兵让他们抵抗唐军,骑兵被朝臣阻挡不能通过,窦建德挥手让朝臣退下,进退之间,唐军已经冲到,窦建德窘迫,退到东面的山坡依凭。窦抗带兵攻击他,交战小有不利。李世民率领骑兵赶往,所向披靡。淮阳王李道玄挺身冲入敌阵,直冲到敌阵背后,又冲破敌阵返回,再进再出,飞箭射在他身上像刺猬毛一样,勇气不衰,射人,都随着弓弦响声而倒地。李世民给他备用马,让他跟随自己。于是各军大战,尘埃满天。李世民率领史大奈、程知节、秦叔宝、宇文歆等人卷起旗帜冲入敌阵,从敌阵背后冲出,张开唐军旗帜,窦建德将士回头看见,全军溃败;唐军追击三十里,斩首三千多级。窦建德中槊受伤,逃窜藏匿在牛口渚。车骑将军白士让、杨武威追赶他,窦建德落马,白士让举起长矛要刺他,窦建德说:“不要杀我,我是夏王,能使你们富贵。”杨武威下马擒获他,用备用马驮着,来见李世民。李世民责备他说:“我讨伐王世充,关你什么事,竟敢越境前来,冒犯我的兵锋!”窦建德说:“今天我不自己来,恐怕还要劳烦您远道去攻取。”窦建德的将士都溃散逃走,被俘获的五万人,李世民当天就遣散释放了他们,让他们返回家乡。
封德彝入营祝贺,李世民笑着说:“不听您的话,才有今天的胜利。智者千虑,不免一失吧!”封德彝非常惭愧。
窦建德的妻子曹氏与左仆射齐善行率领数百骑兵逃回洺州。
甲子日(初七),王世充的偃师、巩县都投降。
乙丑日(初八),任命太子左庶子郑善果为山东道抚慰大使。
王世充的将领王德仁放弃旧洛阳城逃走,副将赵季卿献城投降。秦王李世民将窦建德、王琬、长孙安世、郭士衡等人押到洛阳城下,给王世充看。王世充与窦建德对话而哭泣,仍然派长孙安世等人进城说明失败情况。王世充召集众将商议突围,向南逃往襄阳,众将都说:“我们依赖的是夏王,夏王如今已被擒获,即使能突围出去,最终也必然不能成功。”丙寅日(初九),王世充身穿素衣率领太子、群臣、二千多人到军营门前投降。李世民以礼接待他,王世充伏地流汗。李世民说:“你常常把我当作小孩看待,如今见到小孩,为什么这么恭敬呢?”王世充叩头谢罪。于是部署各军,先进入洛阳,分别把守街市店铺,禁止侵扰抢掠,没有人敢违犯。
丁卯日(初十),李世民进入宫城,命令记室房玄龄先进入中书省、门下省收取隋朝的地图户籍和制书诏令,已被王世充销毁,没有找到。命令萧瑀、窦轨等人查封府库,收取金银绢帛,赏赐将士。收捕王世充党羽中罪行特别大的段达、王隆、崔洪丹、薛德音、杨汪、孟孝义、单雄信、杨公卿、郭什柱、郭士衡、董睿、张童儿、王德仁、朱粲、郭善才等十多人,在洛水岸边斩首。
当初,李世积与单雄信友好,发誓同生共死。等到洛阳平定,李世积说单雄信骁勇绝伦,请求全部献出自己的官职爵位来赎他,李世民不允许。李世积坚决请求得不到允许,流泪哭泣而退下。单雄信说:“我本来就知道你办不成事!”李世积说:“我不惜余生,愿与兄长同死;但我已将自身许给国家,忠义不能两全。况且我死之后,谁再来照顾兄长的妻儿呢?”于是割下大腿肉给单雄信吃,说:“让这块肉随兄长化为尘土,也许还算没有违背当初的誓言!”士民痛恨朱粲残忍,争相投掷瓦砾击打他的尸体,一会儿堆积如坟。囚禁韦节、杨续、长孙安世等十多人送往长安。无罪被王世充囚禁的士民,全部释放,被王世充杀害的人则进行祭祀并撰写悼文。
当初,秦王府属官杜如晦的叔父杜淹侍奉王世充。杜淹一向与杜如晦兄弟不和,进谗言害死杜如晦的哥哥,又囚禁他的弟弟杜楚客,几乎饿死,杜楚客始终没有怨恨的