第3、第6纵队由观城地区秘密南下,27日到达鄄城以东之红船口,与由濮县出发之第7纵队第20旅会合。31日,第3、第7纵队两部以突然动作包围巨野,当晚发起总攻,于1947年元旦拂晓攻克,全歼国民党守军。俘少将总队副司令王自琴以下3000余人。

解放军收复巨野后立即挥戈东向嘉祥。国民党驻军弃城逃往济宁,嘉祥遂于元旦晚8时重获解放。

解放军第6纵队于进军城武途中,获悉金乡国民党驻军整编第88师之新编第21旅,为冀鲁豫独立旅所吸引,大部在金乡以南地区清剿,该城仅余1个团守备,遂临时改变计划,转而奔袭金乡。国民党军新编第21旅立即收兵,旅部率1个团先解放军返回金乡城。解放军第6纵队于12月30日包围金乡,激战竟夜,仅攻占四关。31日及1947年元旦继续发起猛攻,东西两门虽曾三度突入,但由于火力较弱,在国民党军反击下被迫撤出。对金乡的第一次进攻,歼国民党守军1个团大部。

困守金乡之新编第21旅,频频向徐州、郑州两绥署告急求援。21旅为蒋介石嫡系,防守鲁西南的主力。为确保金乡,蒋介石命令薛岳、顾祝同立即派兵增援。徐州绥署派整编第88师师长方先觉率第62旅及第140旅,紧急驰援金乡;郑州绥署则拼凑了3个团(欠1个营),归整编第68师师长刘汝珍指挥,由荷泽东援金乡。由河南保安暂编第4总队司令张岚峰率其第1、第2支队各1个团,由定陶东援金乡。

1947年1月2日,华东解放军主力已回师鲁南,正准备发起鲁南战役。刘、邓根据新情况,为配合鲁南战役,决定实施围城打援,以牵制更多的国民党军。除令第6纵队一部继续围攻金乡外,派冀鲁豫独立旅前出到金乡、丰县间,会合地方武装侦察并迟滞可能由丰县、鱼台来援之敌,同时将第3、第6纵队主力约3万人集结于金乡地区准备围歼援敌,并将情况与围城打援决心上报中共中央军委。1月4日中共中央军委复电刘、邓,同意围城打援的部署。

方先觉率2个旅从徐州出发,经敬安集、丰县,6日到达鱼台附近集结。刘汝珍、张岚峰部也自菏泽、定陶向东开进。

刘、邓根据当时情况,决定首歼方先觉部。1月6日电令第7纵队主力赶到张凤集(章缝集)、南鲁集(位于巨野、城武之间)地区,抑留刘汝珍、张岚峰部,并截断其向城武、定陶的退路。令第3、第6纵队除留一部继续围困金乡外,主力立即向鱼台开进。

8日天降大雪,第3、第6纵队及第20旅、军区独立旅,将方先觉部2个旅包围于鱼台西北之胡家海子、杨庄、宋家洼地区,经过简短的准备即发起进攻。第140旅由台湾开到徐州,随即开到鱼台,情况还未摸清即被解放军包围,9日拂晓战斗结束。第140旅旅部、第29团全部被歼,第28团大部被歼,少将旅长谢懋权被俘。

最激烈的战斗在杨庄。杨庄位于鱼台城北约10里,由方先觉部第62旅主力第186团驻守。8日,解放军第3纵队第8旅包围了杨庄。第186团全部覆灭,第184团亦大部被歼,残部逃回鱼台。方先觉部两个旅大部就歼,除毙伤2000余名外,俘旅、团长以下7000余名。

方先觉部迅速被歼之日,正值华东陈、粟大军进行鲁南战役第二阶段包围峄县、枣庄之时。蒋介石、陈诚为确保徐州安全,急令王敬久、王仲廉部放弃刚占领的大名等地,迅速回援陇海路。

1月10日,杨庄战斗结束后,刘伯承、邓小平即令第3、第6纵队主力挥戈西向,围歼刘汝珍、张岚峰两部。同时因获悉国民党整编第75师将经董口(鄄城西)开赴菏泽,乃急令第1、第2纵队由阳谷向鄄城以东之红船口急进,准备于董口、菏泽间围歼该敌。进军途中又获悉整编第75师改由汲县乘火车南开,乃令第1、第2纵队继续向南急进,协助围歼刘汝珍、张岚峰两部。

1月11日,张岚峰部前进到金乡以西大田集东南之孟家铺、刘家庙、杨家庄地区;刘汝珍部前进到汶上集附近。解放军第3、第6纵队首先将张岚峰部包围,第7纵队主力则迂回到汶上集以西,将刘汝珍部退路切断。12日夜,开始对张岚峰部发起进攻,首歼其1个团。13日,张岚峰部向西突围,解放军跟踪追击,于城武以东之王楼,再歼其另1个团,张岚峰带少数随从逃脱,于城武附近为中共地方武装截获。张岚峰部被全歼。

14日,刘汝珍闻知张岚峰部被歼,立即向定陶撤退。解放军第1、第2纵队经过急行军及时到达南鲁集附近,立即跟踪西追,将刘汝珍部3个团包围于西台集地区。

15日,国民党军在五六架飞机掩护下向解放军反击,企图突围。对攻入寨内的解放军进行多次突击,均被击退。入夜,解放军发起进攻。16日将刘汝珍部3个团(欠1个营)全歼。刘汝珍于被围前已逃入定陶,幸免被俘。

解放军第3纵队在追歼张岚峰残部时,于16日夜乘胜包围城武县城,在炮火掩护下仅用15分钟即登上城头,2个小时解决战斗。全歼张岚峰部辎重营及1个保安团,团长智永德被击毙,县政府及5个区公所亦被歼。至此,巨金鱼战役结束。