事实上,在解放军主力纵队北上不久,王耀武即发觉了有大股共军北移的迹象,并不待南京指示,火速往回收缩。遇到这种情形,二流的将领必然会慌了阵脚,或蛮干,或盘桓。但粟裕绝非等闲之辈,他不露声色,命令各纵队继续按原计划秘密集结部署。曾经的抗日名将王耀武,如果南京的蒋委员长不予施压,他大概会大踏步撤回至胶济线,但此时的王耀武在自己的判断和南京的命令二者间徘徊,时而缩,时而伸。这种摇摆不定,加上莱芜四周的低山丘陵地貌,给了解放军很大的时空间隙,王耀武的伸缩更有利于解放军充分利用这些空隙,而当王最终确信自己可能陷入包围,并下令全线后撤时,一切为时已晚。1947年2月20日,莱芜战役开始打响,至23日下午,北线李仙洲集团被全歼,李仙洲也被生俘。
莱芜战役,王耀武遭遇惨败,但其在此战中的表现仍可圈可点。陈毅提出一个大胆的计划,放弃临沂,诱使李仙洲冒进。王耀武发现李仙洲轻松拿下临沂,对解放军意图产生了怀疑,他立即感到李仙洲军团有危险,马上下令军队开始撤退。这就是王耀武比蒋介石、陈诚高明的地方。他判断对了,实际上,当他的军队开始撤退的时候,中共方面的将领也急了,纷纷要求出战。但是陈毅、粟裕不是寻淮洲,他们不会急于冲锋。陈毅下令不许动,而且很有预见性地说了:就算王耀武不打,蒋介石和陈诚肯定要打,他们会把大餐送回来的。他们的判断果然没错。陈诚发现李仙洲军团在后退,又发现华野架设的浮桥,立即认定陈毅部要北渡黄河。他一面斥令王耀武不准后缩,一面又直接命令北路前敌总指挥李仙洲,要他确保新泰、莱芜阵地,堵住胶济路一线。这样,仅仅过了一天,李仙洲又被陈诚送回了陈毅、粟裕的嘴边。此后,陈毅、粟裕巧妙设围,将李仙洲困在莱芜,李仙洲部下整四十六师师长韩练成是中共布置的内线,临阵突然失踪,加剧了其军队的指挥混乱,终于被粟裕的华野包了饺子,全军覆没。这一番折腾,王耀武手下几乎没兵了,只剩下济南城。接下来就看解放军到处冲杀,各处的保安团纷纷被歼,王耀武也无可奈何,一年来辛辛苦苦打开的局面全部泡汤。