1941年11月15日,德军终于发起了进攻,试图突破莫斯科南部与北部的苏军防线。11月24日,古德里安的第2装甲集群占领了距离莫斯科公里的韦尼奥夫,并开始包围莫斯科。瑞哈德特的第3装甲集群与霍普纳的第4装甲集群努力阻击苏军第30和第16集团军。11月23日,第3装甲集群占领莫斯科西北部32公里处的克林,将苏军第30和第16集团军分割开来。此时,苏军阵线危如累卵,但由于预备队前赴后继地顽强抵抗,迫使德军每争夺一寸土地都要付出惨重的代价。11月26―27日,在噩梦似的艰苦条件下,党卫军“帝国”师与苏军第16集团军下辖的第78西伯利亚师在莫斯科西北部的伊斯特拉遭遇,与此同时,第7装甲师也开始步步进逼莫斯科――伏尔加河。11月28日,库兹涅佐夫接到朱可夫的命令,率领第1突击集团军,在第16集团军的协同下,将德军赶回运河对岸。在南部,苏军预备队在图拉、奥卡河和莫斯科河阻击了第2装甲集群的前进。12月1日,第4集团军向莫斯科发动进攻,气温骤然下降到零下35摄氏度。虽然第4集团军已经突破苏军第33集团军的防线并深入24公里处的纵深地带,但在苏军的顽强抵抗下,在1941年12月4日被迫停止前进。这时,德军指挥官意识到他们已无法赢得战役的胜利,事实上,德军的进攻已经陷于失败的境地。12月5日,苏军在朱可夫的指挥下向德军发起猛烈攻击。
苏军的反攻旨在迫使德军远离莫斯科。苏军拥有强大的预备队,能够在一夜之间从防御转入进攻,德军为此大惊失色,因为此时他们还没有建立必要的防御阵地。尽管苏军指挥官在实施机动进攻作战方面缺乏经验,但莫斯科的反攻还是取得了成功。苏军的战术固然无法与德军的战术相提并论,却沉重打击了德军的士气,使德军处于濒临崩溃的边缘。德军在苏军的反攻下被迫后撤,但苏军的错误却贻误了包围德军第4集团军的战机,后者在面临极度危险的情况下进行了顽强抵抗。12月20日,苏军逐步消除了德军对莫斯科的威胁,并开始策划发动一场雄心勃勃的进攻,试图包围和消灭中央集团军群。科涅夫指挥加里宁方面军从莫斯科北部向西南方向发动进攻,同时西方面军的左翼也从莫斯科南部向北部推进,打算在维阿兹马胜利会师。此时,希特勒与德军最高统帅部之间出现了信任危机。12月17日,以健康状况不佳为借口,博克在前线被就地免职,由陆军元帅冯·克鲁格接任。12月19日,冯·勃劳希契陆军元帅被免除总司令的职务,由希特勒兼任。12月16日,希特勒发布“坚守阵线,以防撤退引起大溃败”的命令。该命令与德军战地司令官希望的战术机动背道而驰。此后4个星期内,当中央集团军群的命运仍然悬而未决时,希特勒于12月25日免除古德里安的第2装甲集群司令官的职务,接着又分别免除了第4装甲集群和第9集团军司令官霍普纳和施特劳斯的职务。1942年1月2日,希特勒不顾可能被包围的危险,命令德军坚守防线。1月5日,斯大林不顾朱可夫的建议,反其道而行之,命令苏军在整个东线发起全面进攻。这样一来,苏联的兵力被分散,虽然在其他地点取得了胜利,但给中央集团军群所造成的致命威胁却因此而逐渐消除。1942年2月,苏军的进攻开始减弱,1942年3月,德军再度恢复了信心。
然而,德军的军心已经严重动摇,这种情况不只是在莫斯科西部存在。北方集团军群停止了向列宁格勒的推进。1942年1月8日,北方集团军群在伊尔曼湖地区遭遇苏军的猛烈进攻,虽然伤亡惨重,但截至1942年4月,他们还是在苏联的寒冷冬季里幸存下来。苏军并没有对德军予以决定性的突破,后者仍然能够毫不留情地将列宁格勒团团围住。
10月18日,第1装甲集群接到向罗斯托夫进军的命令。但由于后方物资补给困难,第1装甲集群直到11月5日才开始向罗斯托夫进军。显然,物资补给问题已经越来越成为左右战争进程的决定性因素。在德军的强大攻势下,苏军防线被突破。幸运的是,暴雨迟滞了德军的所有行动,直到11月17日才得以恢复。11月20日,在零下20度的寒冷天气里,罗斯托夫落入德军手中。铁木辛哥的西南方面军后来进行了重组,于11月22日向罗斯托夫北部发起猛烈反攻。11月28日,在苏军的强大攻势下,第1装甲集群被迫放弃罗斯托夫。龙德施泰特接受了克莱斯特的战术决定,命令德军继续向西撤退129公里,到达米乌斯河后方的一处防御阵地。希特勒命令第1装甲集群坚守阵地,并于12月1日凌晨解除了龙德施泰特的职务。龙德施泰特被陆军元帅冯·赖歇瑙取代,后者是一个狂热的纳粹分子,他确认了龙德施泰特发布的命令,并且得到了希特勒的批准。10月25日,曼施泰因率领第11集团军越过彼列科普地峡,突破苏军第51集团军的防线,进入克里米亚。