1947年1月20日夜,晉察冀軍區第4縱隊第10、第11旅冒風雪嚴寒突然出擊,一舉攻克望都城和王京村,殲其保全第5總隊1個團又1個營;獨立第1旅和第3、第9軍分區部隊在定縣至新樂鐵路沿線展開破擊戰。21日夜,第4縱隊主力繼續南進定縣、新樂之間,23日以一部兵力攻占定縣城西南寨西店,開闢戰場,主力在定縣以南鐵路兩側設伏,準備打援。24日,由正定經新樂北援的國民黨軍保全第5總隊1個團及第32師一部進至十家町地區時,被4縱隊設伏部隊全殲。隨後,獨立第1旅向南逼進,新樂縣城的國民黨守軍棄城退逃。28日,第4縱隊等部對孤立無援的定縣城發起總攻,守軍3個團一部被殲,餘部逃至望都地區被第2縱隊截殲。
保南戰役,晉察冀軍區部隊共殲滅國民黨軍8000餘人,控制了保定以南的平漢鐵路100餘公里,切斷了保定、石家莊兩地國民黨軍的聯繫,使晉察冀解放區冀中、冀晉兩地連成了一片。