9月29日,国民党军第16军第94、第22、第109师和第53军第130师共4个师的兵力,在空军、坦克的配合下,沿平绥铁路分两个梯队向怀来进攻,企图首先攻占延庆,再迂回怀来。
晋察冀军区第2纵队沉着应战,英勇抗击,击退了敌人的多次进攻。至10月2日,国民党军占领了岔道、南园、内泡、东西花园地区。3日,国民党军第94师由马圈子沿铁路北侧,第109师由东西花园沿铁路南侧,向怀来以东火烧营、南北七里桥、达子营地区发起全线进攻,并出动飞机100多架次配合地面部队的行动。第109师为突破晋察冀军区部队的阵地,打乱其防御体系,共发射了7000多发炮弹。
晋察冀军区部队进行了英勇的反击。经4小时的激战,晋察冀军区部队歼灭第109师第325团全部及第327团1个营,缴获坦克3辆。
国民党军从正面进攻怀来受阻,被迫转攻为守。这时,蒋介石派其参谋总长陈诚,亲自到南口,部署部队从侧面迂回怀来。10月7日,国民党军车运其预备队第94军第43师及第121师(久1个团)至沙河,企图从怀来东南20公里的马刨泉、横岭迂回晋察冀军区部队侧背。
晋察冀军区首长针对敌人这一企图,决定以第1纵队、第2纵队第4旅和第3旅、第3纵队第7旅和刚从西线调来的第4纵队第10旅第30团在马刨泉地区设伏。
8日,第43师第127团进至马刨泉,主力进至水涧地区。晋察冀军区以第1旅担任阻援,以第2、第4旅全歼了马刨泉之敌第127团。敌第43师主力窜回沙河。
至此,平绥东线晋察冀军区部队经10多天作战,歼灭国民党军2个整团又1个营共1万余人,将国民党军阻遏于怀来以东地区。
正当晋察冀军区集中主力在平绥东线与国民党军激战,张家口西北地区兵力空虚时,傅作义乘机以第35军第32师伪装敌军主力,虚张声势向大同、阳高前进,并扬言向平绥路东南张家口进攻。
10月7日,敌暂编第3军(2个师)并指挥第35军的新编第31师、第101师、骑兵第4师,由集宁附近经南壕堑(今尚义)去袭击张北。
由于对傅作义部经由张北迂回张家口没有足够的警惕,傅作义部于8日进到南壕堑、大清沟时,冀察军区首长第17军分区误认为是小股敌窜扰,军区首长遂令骑兵旅直奔南壕堑、大霸沟歼灭该敌。这时,傅作义部骑兵2000多人直插张北,而张北仅有军区警备团1个连和1个骑兵连驻守。
傅作义部骑兵迅速突入城内。军区警备团乘汽车增援,中途遭国民党军飞机轰炸,虽赶到了张北,但已处于不利地位,与敌激战至下午被迫撤退。傅作义部后续部队到达张北后,继续向张家口前进。教导旅虽在狼窝沟顽强阻击敌人,但因寡不敌众,在晋察冀军区主力赶调不及的情况下,被迫后撤。10日,傅作义部攻陷狼窝沟。这样,晋察冀军区部队在张垣以北已无险可守。11日,晋察冀边区和张家口市各机关撤出张家口。
为配合平绥东线作战,晋察冀军区第3纵队第8旅、冀察军区独立第4旅和冀中军区独立第7、第8旅等部,9月29日向平汉线南起漕河北至涿县段发起大规模的破击战。冀晋军区独立第1、第2旅及地方武装向平汉线于家庄、定县段出击。至10月3日,上述部队经5天的连续战斗,先后攻克望都、徐水、定兴、容城等4座县城共歼国民党军8000余人,迫使国民党军不得不抽调第94军第5师和第121师1个团,于10月15日南下增援。冀热辽军区部队也展开了广泛的出击,歼国民党军7000余人,收复冀东县城3座。