窦建德见唐军主力迟迟不肯出营决战,下令将夏军步兵十万人列成方阵,缓缓向前推进,逼近唐军大营。之前去放牧的一千骑兵,这时已被李世民派人召回,李世民令弓弩手射住阵脚,让将士们坐地休整,任何人不允许再出营。夏军几次跃跃欲试,试图占领唐军的大营,都被对方的弓弩手射退,不觉两个时辰过去,已是正午时分。
古时阴历的五月,已进入初夏,窦建德的部队在烈日下整齐地站了一上午,已集体出现疲乏的状况。而对面的唐军阵中,由于全体士兵静坐待命,虽然也难捱天气的炎热,整体状况比夏军好得多。正午过后,唐军营中冉冉升起炊烟,却是唐军将士按照李世民的命令,在营中埋锅造饭;夏军也已饿得不行,得唐军提醒,便派人去询问窦建德,是否先回营吃过午饭再回来重新列阵。窦建德的命令尚未下达,这些士兵已三三两两的瘫软在地上,此时,唐军营中突然驰出三百骑兵,当着十万夏军的面从北向南一路奔驰,夏军士兵急忙纷纷爬起身来,手持武器去追赶这支唐军。率领该军的唐军将领,乃宇文化及之弟,名叫宇文士及。两年前,宇文化及就已被窦建德擒杀,宇文士及之所以没有受到牵连,主要有两个原因。其一,宇文士及和唐高祖是旧交,二人关系很好;其二,宇文化及毒死杨浩,自立为帝,宇文士及曾对此表示坚决反对,于是他放弃了大哥授予他的官爵,以征集粮草的名义逃往关中投奔唐国,事后,宇文士及被唐高祖任命为秦王府骠骑将军。
宇文士及出战前,李世民告诫他道:“夏军人人饥渴交加,疲乏不堪,我军战机已现。然而,他们所排列的阵形还算整齐,在大战之前,需要先设法把他们的阵形打乱。你此次出营,不用和敌军厮杀,只顾赶着马从北向南而去,如果敌军的阵形巍然不动,你就带着三百骑兵返回;如果他们追赶你,你就立即改变方向,带着手下从西向东奔驰,如此一来,夏军士兵要想追上你,势必会将他们的身后暴露在我军主力面前。”
宇文士及领会主帅意图,一看夏军争相追赶自己,即带着三百骑兵在战场上拐了个急弯,由西向东逃去。夏军为了追赶他,也都扭头向东追去,不经意间,这十万士兵的后背全部暴露在唐军主力面前。李世民拔剑道:“可以决战了!”他一声令下,数万以逸待劳的唐军步兵全部冲出了大营,手持长矛猛击夏军步兵的身后,夏军阵形早已被宇文士及拉扯得一团混乱,对此完全无力招架。趁着两军步兵在唐军大营附近展开混战,李世民另率数千骑兵,经战场外侧迂回,向东飞驰而去,直扑窦建德设置在牛口渚附近的夏王行营。
窦建德此时正在接受大臣们的朝谒,和他们商议,是不是应该派人把那十万大军召回来开饭。他这边还在开着会呢,唐军骑兵突然降临,那些文官被吓得拔腿就跑。窦建德尚自镇定,呼唤左右道:“骑兵呢,我军骑兵何在?”夏国的骑兵之前并未随步兵列阵出战,都驻守在夏王行营的附近,听说夏王告急,迅速赶来支援。哪知道那些夏国的文官刚好朝着他们迎面逃来,夏军骑兵躲闪不及,只好骑着战马在夏国文官们的身上践踏,慌乱间踩死、撞伤了很多人,其中有些还是夏国的重臣。那些骑兵吓怕了,心想万一踩死个宰相、王侯,谁担得起责任?于是纷纷勒住战马,不敢再继续前进。
窦建德迟迟等不到骑兵护驾,李世民带着唐军骑兵却已破营而入,杀到他的面前,无奈之下,窦建德只得放弃坚固的行营向外逃走,一路且战且退,来到一个山坡之下。好在这时候,上万名夏军骑兵终于陆续赶来,他们倚靠着山坡,誓死保护夏王,李世民麾军冲击多次,因夏军阵中乱箭纷飞,唐军众将无人敢过分深入。李世民有一堂弟,名叫李道玄,年仅十八岁,他为了打破僵局,持槊单骑冲入夏军的垓心,几番进出,身中的箭支就像刺猬的毛发一样密集,虽然如此,李道玄勇气不减,依然强忍剧痛,在敌军阵中奋力往来冲杀。唐军其他将士受李道玄激励,很多人也都尾随他深入敌阵。一时间,双方骑兵在窦建德的身前筑成了两道人墙,一道人墙猛力进攻,一道人墙全力防守,长槊、弓箭你来我往,展开了拉锯战。受马蹄践踏,战场上尘土飞扬、遮天蔽日。