11月19日,碾庄圩外围村落均被解放军攻占,粟裕决定以8纵从东南、9纵从南、6纵从西、4纵从北四面总攻。碾庄圩是个有百十户人家的村庄,村边有两道土围墙和宽十余米深近两米的水壕,而且在两道围墙之间是近百米的开阔地,国民党军借助这一有利地形组成绵密火力网,当时在村内有第7兵团部直属部队、警卫营、工兵营、25军和64军各一个团,总兵力将近万人。
晚二十时,总攻开始,华野集中所有重炮实施火力准备,由于6纵即将承担支援中野的作战,临时退出战斗。总攻就由4、8、9纵来实施。其中9纵从南面攻击,国民党军集中了数十挺机枪的密集火力封锁村南水壕上的小桥,由于9纵挖掘的交通沟出口距离水壕还有几十米远,部队在敌火力下暴露时间过长,所以多次攻击都未成功。纵队司令聂凤智亲临主攻团73团,也就是战功赫赫的"济南第一团"指挥,有人反映在战斗中曾见有战士徒涉过水壕,所以不必一定要从小桥上突破。聂凤智观察了地形,决定先将交通沟挖到水壕边,战斗打响后立即以突然动作徒涉过壕,实施突破。二十二时,再次发动攻击,果然一举冲过水壕,突破了第一道围墙,但国民党军凭借两道围墙之间开阔地上的工事,以密集火力封锁开阔地,并组织反冲击,双方拼杀极其激烈,73团在友邻的支援下,经过四小时激战终于突破第二道围墙,冲入村里。而东南方向的8纵也于20日凌晨涉水过壕,并相继突破两道围墙,这时候村里的国民党军见无险可守开始慌乱,黄百韬只得率残部约一千余人退到北面的第64军军部所在地大院上,碾庄圩随即被解放军攻占,守军万余大部被歼。
11月20日,解放军继续猛攻,4纵攻尤家湖,8纵攻大院上,9纵攻小院上。
11月21日,4纵在二十九门大炮和四辆坦克支援下,于十六时三十分开始对尤家湖总攻。炮兵将大炮推进到距敌仅三百米处实施抵近射击,很快摧毁敌前沿工事,然后步兵跟在坦克后发起冲锋,迅速涉过水壕突破围墙,突入纵深,黄百韬见形势危急下令25军向西南突围,25军残部在突围中被全歼,仅军长陈章只身逃脱。4纵随即攻占尤家湖,由于4纵连日战斗,伤亡很大,司令陶勇特别要求多抓俘虏,补充部队。战斗一结束,4纵就将刚俘虏的四千多俘虏补入部队。
同日黄昏,9纵开始攻击大院上,先集中全部大炮猛轰,甚至将两天前刚在碾庄圩缴获的大炮都用上了,经一夜激战于次日上午十时,攻占大院上。黄百韬和64军军长刘镇湘在大院上被攻占前逃往小费庄,继续指挥余部抵抗。
11月22日,4纵、8纵、9纵合兵一处围攻小费庄,黄百韬率部拼死顽抗,到黄昏时分,他见大势已去,就让64军军长刘镇湘指挥残部向西北突围,但部队刚一冲出村子就遭到解放军迎头痛击,很快被全歼,刘镇湘被俘。而黄百韬不愿突围,免得突围时的狼狈样被人耻笑,在村子里自杀,也有说被流弹打死。临死前对身边的25军副军长杨廷宴说:"我有三不解:一为什么这么傻,要在新安镇等待44军两天?二既然在新安镇等待两天,为什么没想到在运河上架设浮桥?三李弥既然日后要拼命向东进攻来救援我,为什么当初不在曹八集晚撤一会,掩护我西撤?"