Советское командование, готовя контрнаступление, стремилось сделать все возможное, чтобы скрыть от противника свои намерения. Планирование операции во фронтах осуществлял предельно ограниченный круг людей, а боевые документы к ней разрабатывал лично начальник штаба фронта. Командующих армиями предупредили, что с полученной ими директивой «о переходе в контрнаступление ознакомить только члена Военного совета и начальника штаба. Исполнителям давать распоряжения в части, их касающейся». Запрещались любые переговоры о предстоявшем контрнаступлении по техническим видам связи.
К началу декабря соотношение сил под Москвой стало меняться. Хотя противник сохранял превосходство в численности войск, количеств артиллерии и танков, это превосходство уже не было подавляющим. Небольшое преимущество было на стороне советской авиации.
В начале декабря немецкие войска предприняли еще одну попытку захватить Москву, но были сразу остановлены. В момент, когда наступательные возможности противника уже иссякли, но он еще не успел перейти к обороне, по всему фронту от Калинина до Ельца советские войска 5-6 декабря перешли в контрнаступление. На рассвете 5 декабря, вопреки всем прогнозам фельдмаршала фон Бока о невозможности перехода советских войск в большое контрнаступление, соединения левого крыла Калининского фронта, а в 14 часов — и правого фланга 5-й армии нанесли удары по врагу. 6 декабря на него ринулись 1-я ударная, 10-я, 13-я, 20-я и 30-я армии; 7 декабря — соединения правого фланга и центра 16-й армии, а также оперативная группа генерал-лейтенанта Ф. Я. Костенко, 8 декабря — левофланговые соединения 16-й армии, оперативная группа генерал-лейтенанта П.А. Белова, 3-я и 50-я армии. На калининском, клинском, солнечногорском, истринском, тульском и елецком направлениях развернулись ожесточенные сражения. Войска 30-й армии под командованием генерал-майора Д.Д. Лелюшенко, прорвав своим центром фронт обороны 3-й танковой группы, с северо-востока приближались к Клину. Здесь немцы оказывали особенно упорное сопротивление. Дело в том, что выход советских войск на ближние подступы к Клину создавал угрозу глубокого флангового удара по немецким войскам, действовавшим северо-западнее Москвы. Вот почему германскому командованию пришлось спешно усиливать свою клинскую группировку за счет переброски войск с других участков. Уже 7 декабря в район Клина начали перебрасываться части шести танковых дивизий. Это обстоятельство привело к замедлению наступления 30-й армии, но зато другим войскам правого крыла Западного фронта облегчило ведение боевых действий. На калининском направлении контрнаступление развивалось еще медленнее. 29-я армия под командованием генерал-лейтенанта И.И. Масленникова вместо того, чтобы нанести один удар, предприняла наступление одновременно на трех участках фронта, к тому же удаленных один от другого на 7-8 км. Каждая из трех наступавших дивизий наносила удары на 1,5-километровом фронте. Атаковавшие части вклинились в оборону противника, но, простреливаемые его огнем с обоих флангов, вынуждены были остановиться. На следующий день немцы предприняли сильные контратаки и вновь оттеснили советские части на левый берег Волги. По существу и к концу пятого дня боев соединения 29-й армии оставались на тех же рубежах, с которых они начали наступление. Наоборот, 31-я армия, командующим которой был генерал-майор В.А. Юшкевич, достигла успеха. Она захватила плацдармы на правом берегу Волги и к исходу 9 декабря продвинулась на 10-12 км, перерезав шоссе Калинин — Тургиново и тем самым создав угрозу тылу группировки противника в Калинине.
Контрнаступление под Москвой шло уже восьмой день, а сообщений о нем не было никаких. Думы о грозящей беде, нависшей над столицей, тяжким грузом давили на людей, а неизвестность только усиливала их тревогу за участь любимого города. И вот в ночь на 13 декабря по радио прозвучало сообщение Совинформбюро: «В последний час. Провал немецкого плана окружения и занятия Москвы». В нем впервые раскрывались планы врага, и говорилось о срыве «второго генерального наступления на Москву». Утром 21 декабря части подвижной группы В.С. Попова захватили мост через Оку, ворвались в Калугу и завязали уличные бои с гарнизоном города. Немецкое командование стремилось во что бы то ни стало удержать за собой Калугу. В результате активных действий превосходящих сил врага группа Попова вскоре была расчленена. Ей пришлось вести бои в окружении, которые приняли затяжной характер и продолжались до конца декабря.
Вынужденный отход 43-го армейского корпуса к Калуге привел к тому, что разрыв между смежными флангами 4-й полевой и 2-й танковой армий еще более увеличился. В эту брешь была направлена группа Белова, которая 24 декабря вышла к Оке южнее Лихвина (ныне — Чекалин). Наступление группы и выход ее частей к Оке благоприятно отразился на действиях левофланговых соединений 50-й армии, поскольку была устранена угроза удара с юга. Армия быстро выдвинулась к Лихвину и 26 декабря освободила город. Теперь ее левофланговые дивизии получили возможность охватить Калугу с юго-запада. К этому моменту правофланговые соединения армии вели бои с противником восточнее и юго-восточнее Калуги, стремясь охватить ее еще и с северо-востока. 30 декабря после десятидневных напряженных боев группа Попова совместно с подошедшими частями 290-й и 258-й стрелковых дивизий очистили от оккупантов старинный русский город Калугу.
Успешное продвижение войск правого крыла и центра Калининского фронта поставило противника в сложное положение. Ведь продолжение борьбы северо-восточнее Ржева создавало угрозу прорыва обороны в центре 9-й армии.
Однако даже в такой ситуации и 2 января Гитлер не дал разрешение на отвод войск этой армии. К 7 января соединения 22-й и 39-й армий сломили сопротивление противника и вышли на линию р. Волга, железная дорога западнее Ржева, открыв себе путь для наступления на Вязьму. К этому времени, используя успех 39-й армии, развивали наступление в направлении Ржева и нависли над ржевской группировкой противника с северо-востока соединения 29-й армии, а с востока — 31-й армии. Таким образом, на втором этапе контрнаступления войска Калининского фронта нанесли 9-й немецкой армии очередной удар, вынудив ее на торжокско-ржевском направлении отойти на 50-60 км, а на калининско-ржевском — на 90-100 км. На правом крыле они вышли на рубеж Волги, в центре — охватили Ржев полукольцом. Относительно главных сил группы армий «Центр» фронт продолжал занимать охватывающее положение.
В результате успешного контрнаступления к началу января 1942 г. Красная Армия освободила Калинин, Калугу, сотни городов и сел. Враг был отброшен от Москвы на 100-250 км. Непосредственная угроза столице Советского государства была ликвидирована.
Победа под Москвой имела огромное военно-политическое значение. Гитлеровская армия, триумфально шествовавшая по Европе, потерпела первое крупное поражение. Под Москвой был окончательно сорван фашистский план "молниеносной войны". Поражении Германии под Москвой вызвало значительные трудности в самой Германии.