כאשר תשה תנופת המתקפה הגרמנית עבר הצבא האדום למתקפת נגד, שהחלה ב-5 בדצמבר. הפיקוד העליון הסובייטי (ה"סטאבקה") הצליח לרכז בחשאי כוחות עתודה חזקים, שכללו, בין השאר, כ-25 דיוויזיות רעננות שהועברו מהמזרח הרחוק, לצורך מתקפת הנגד. הפיקוד הגרמני הופתע לחלוטין מעוצמת המתקפה הסובייטית, משום שהעריך שברית המועצות מיצתה עד תום את עתודות כוח האדם שלה. המטרה העיקרית של מתקפת הנגד הייתה הסרת האיום הגרמני על מוסקבה. מטרות משניות היו פריצת המצור הגרמני על לנינגרד, וכיבוש מחדש של אגן הדון וחצי האי קרים. במהלך חודש דצמבר ובמחצית הראשונה של ינואר 1942 זכתה מתקפת הנגד להישגים ניכרים, בעיקר באזור מוסקבה. החיילים הגרמנים נלחמו בתנאי מזג אוויר קשים במיוחד, ללא ציוד מתאים ללחימה בחורף הרוסי, וספגו אבדות כבדות. במספר מקרים הגרמנים נסוגו במהירות, מחשש שינותקו מעורפם, ונטשו כמויות גדולות של ציוד כבד. הביגוד וציוד הלחימה הסובייטי היו מותאמים היטב ללחימה בתנאי חורף, והצבא האדום ניצל עובדה זו עד תום. קבוצת ארמיות מרכז הגרמנית עמדה בפני כיתור, והפיקוד שלה נתקף בבהלה וביקש אישור לסגת חזרה לאזור סמולנסק. אולם היטלר לקח לידיו את הפיקוד, הדיח חלק ממפקדיו הבכירים, וסירב לאשר נסיגה כללית. הוא פקד על הכוחות הגרמניים להחזיק מעמד בכל מחיר, ולא לסגת גם במקרה של סכנת כיתור. העקשנות של היטלר הוכיחה את עצמה. השליטה האווירית ממנה נהנו הגרמנים, איפשרה להם להעביר אספקה לכוחותיהם בדרך האוויר גם במקרים בהם כותרו על ידי הצבא האדום, והתחזקות ההתנגדות הגרמנית בלמה את תנופת המתקפה הסובייטית. מצפון ומדרום למוסקבה הצליח הצבא האדום לשחרר שטחים נרחבים ולהתקדם למרחק של עד 350 קילומטר ממוסקבה, אולם במרכז הצליחו הגרמנים להיאחז במבלט המבוצר רז'ב-גז'צק-ויאזמה, במרחק פחות מ-180 קילומטר ממערב למוסקבה, ומשם המשיכו לאיים על הבירה הסובייטית.
בגזרות האחרות של החזית ההישגים הסובייטיים היו מוגבלים עוד יותר. בחזית הדרומית הצליח הצבא האדום להדוף את הגרמנים מהעיר רוסטוב, "השער לקווקז", עד לקו נהר המיוס, ולהשתלט מחדש על חצי האי קרץ' שבקרים המזרחית (פעולה שהפחיתה את הלחץ הגרמני על נמל סבסטופול, שעמד במצור מאז אוקטובר 1941). אולם נסיונותיו לכבוש מחדש את אזור דונבאס נכשלו. בחזית לנינגרד הצליח הצבא האדום לכבוש מחדש את צומת מסילות הברזל החשוב בטיחווין, מה שאיפשר לשפר באורח ניכר את אספקת המזון לעיר הנצורה, אך נכשל בנסיונותיו לפרוץ את המצור הגרמני על לנינגרד.
עד סוף ינואר 1942 הגיעה התקפת הנגד הסובייטית לעצירה מוחלטת. הכוחות הסובייטים היו מותשים לחלוטין מלחימה רצופה בתנאי מזג אוויר קשים (בטמפרטורות של מינוס 20 מעלות) וסבלו אבדות כבדות בהתקפות נגד העמדות הגרמניות המבוצרות. אף על פי שכל העתודות הסובייטיות הוטלו למערכה, באזור מוסקבה עדיין נהנו הגרמנים מעדיפות מספרית בכוח אדם, ובמיוחד בציוד כבד. התעשייה הסובייטית עדיין לא התאוששה מהמעבר מזרחה, ולא הייתה מסוגלת לספק את צורכי הצבא האדום בנשק כבד. הצבא הסובייטי סבל גם ממחסור חמור בכלי רכב ממונעים, עובדה שהגבילה את ניידותו, והיחידות המשוריינות שלו עדיין לא היו מסוגלות להתמודד עם דיוויזיות השריון הגרמניות בקרב תנועה. עם זאת, הצלחת הצבא האדום להתאושש מסדרת המפלות הנוראות שספג בחודשים הראשונים של הפלישה הגרמנית, ולעבור למתקפת נגד בחורף 1941/1942, הייתה הישג אדיר, ונקודת מפנה חשובה במלחמה בחזית המזרחית. בפעם הראשונה במלחמת העולם השנייה נופץ המיתוס על הצבא הגרמני הבלתי מנוצח. הוורמאכט נסוג מאות קילומטרים וספג מפלה קשה.
מתקפת הקיץ של 1942.
סטלין והפיקוד העליון הסובייטי נכשלו לחלוטין בהערכת תמונת המצב באביב 1942. הם העריכו שהאבדות הכבדות שספג הצבא הגרמני במהלך מתקפת החורף, החלישו מאוד את כוחו והכשירו את הקרקע להמשך המתקפה הסובייטית. אולם למעשה, מצבה של ברית המועצות באביב 1942 היה חמור בהרבה ממצבה של גרמניה הנאצית. הצבא האדום נחלש מאוד בעקבות האבדות הנוראות שספג במהלך 1941 (לפחות 4.3 מיליון נפגעים, מתוכם כ-3 מיליון הרוגים, נעדרים ושבויים) וסבל ממחסור חמור בכלי נשק כבדים (טנקים ומטוסים). תפוקת חומרי הגלם - פחם, פלדה ועפרות ברזל - ששימשו את התעשייה הכבדה הסובייטית, הצטמקה ב-3/4 לאחר כיבוש אזור התעשייה והמכרות החשוב של דונבאס על ידי הגרמנים. היכולת התעשייתית של גרמניה הנאצית הייתה גדולה פי ארבעה מזו של ברית המועצות. העברת התעשייה הסובייטית מזרחה גרמה לירידה בלתי נמנעת בתפוקה למשך מספר חודשים, ובנוסף לכך עשרות מיליוני אזרחים סובייטיים נשארו בשטחים שנכבשו על ידי הצבא הגרמני, ולא יכלו לסייע למאמץ המלחמה הסובייטי. הצבא הגרמני התאושש מהמכות שספג במהלך מערכת החורף, לאחר שקיבל תגבורות חזקות, והיה מוכן לחדש את המתקפה בחזית הסובייטית עם בוא האביב.
ב-12 במאי פתחו הכוחות הסובייטיים במתקפה גדולה באוקראינה, שנועדה לשחרר את אוקראינה המזרחית ולהגיע לקו נהר הדנייפר. היעד הראשון של המתקפה הייתה העיר חרקוב. בקרב זה עמדו לרשות הגרמנים עתודות ממונעות רבות עוצמה בקרבת מקום. הם הניחו לכוחות הסובייטים התוקפים להתקדם לכיוון חרקוב, ואז תקפו את אגפיהם וכיתרו אותם. התוצאה הייתה השמדה כמעט מוחלטת של 3 ארמיות סובייטיות ואובדן מאות טנקים. במקביל פתח הצבא הגרמני בחצי האי קרים במתקפה גדולה על הכוח הסובייטי, שהחזיק בחצי האי קרץ' מאז חורף 1941. שלוש הארמיות הסובייטיות שהחזיקו בחצי האי לא הצליחו להחזיק מעמד, ונאלצו להתפנות בדרך הים חזרה לקווקז, לאחר שספגו אבדות כבדות ואיבדו כמעט את כל הציוד הכבד שלהם. לאחר שהסירו את האיום הסובייטי על עורפם חידשו הגרמנים את התקפתם על נמל סבסטופול, ולאחר כחודש של לחימה קשה נאלצו שרידי הכוחות הסובייטיים לפנות את העיר (3 ביולי) לאחר שספגו אבדות כבדות.
הפיקוד העליון הגרמני הבין, שלאחר הצטרפות ארצות הברית למלחמה, על גרמניה לעשות מאמץ להכניע את ברית המועצות ולהוציא אותה מהמלחמה בהקדם, כדי שלא תצטרך לעמוד במלחמה בשתי חזיתות. הגרמנים העריכו, שהפיקוד הסובייטי יצפה לחידוש המתקפה בחזית המרכזית על מוסקבה, וירכז את כוחותיו העיקריים באזור זה, ולכן החליטו לתקוף בדרום ברית המועצות. המטרות העיקריות של המתקפה המתוכננת, שקיבלה את שם הקוד "תיק כחול", היו כיבוש האזורים החקלאיים העשירים של הדון והקובאן, כיבוש הקווקז על שדות הנפט שלו, החיוניים למאמץ המלחמה הסובייטי (והגרמני), ושליטה על התנועה בנהר הוולגה, ששימש כעורק תעבורה ראשי בין דרום ברית המועצות לשאר חלקי המדינה. הפיקוד הגרמני הניח, שכיבוש דרום ברית המועצות האירופית יגרום מכה אנושה לכלכלה הסובייטית, וליכולתה להמשיך לנהל את המלחמה. קבוצת ארמיות דרום הגרמנית, שכללה 5 ארמיות גרמניות, ו-4 ארמיות של בנות בריתה של גרמניה, נועדה בשלב ראשון לתקוף לכיוון דרום מזרח, במטרה לכבוש את העיר סטלינגרד, ששכנה בעיקול של נהר וולגה, ושימשה מרכז תעשייתי חשוב, ובשלב שני לפנות דרומה, במטרה לכבוש את אזור הקובאן ואת הקווקז.
ב-28 ביוני פתחה קבוצת ארמיות דרום במתקפת הקיץ. הכוחות הסובייטיים שעמדו מולה נחלשו מאוד בעקבות האבדות שספגו במתקפה הכושלת על חרקוב, והגרמנים נהנו מעדיפות גדולה בשריון ובמטוסים. בנוסף לכך, פני הקרקע המישוריים באזור הדון ותנאי מזג האוויר הנוחים איפשרו לארמיות השריון הגרמניות לנצל עד תום את יתרונותיהן בלוחמת תנועה. תוך זמן קצר התמוטטה ההתנגדות הסובייטית, וכוחות הצבא האדום בחזית הדרומית פתחו בנסיגה מהירה, שהפכה במקרים רבים למנוסת בהלה. ב-5 ביולי חצו כוחות גרמניים והונגריים את נהר הדון וכבשו את העיר וורונז', שם נתקלו לראשונה בהתנגדות נחושה. הפיקוד הסובייטי, שחשש שהגרמנים מתכוונים לפנות צפונה ולנסות לכתר את מוסקבה ממזרח, ריכז שם כוחות גדולים, והצליח לבלום את המשך ההתקדמות הגרמנית. אולם הכוח הגרמני העיקרי, שהתקדם לכיוון דרום מזרח במקביל לגדה הדרומית של נהר הדון, כמעט לא נתקל בהתנגדות, והתקדמותו הייתה מהירה ביותר. ב-19 ביולי כבשו הגרמנים את עיר התעשייה החשובה וורושילובגרד (כיום לוהנסק) וב-28 ביולי כבשו את הערים נובוצ'רקסק ורוסטוב. בשלב זה עשו היטלר והפיקוד הגרמני טעות קריטית. התקדמות קבוצת ארמיות דרום הייתה כל כך מהירה ומוצלחת, שהם חשבו שניתן יהיה להשיג את שני היעדים העיקריים של המתקפה (כיבוש הקווקז, וניתוק נהר הוולגה) בעת ובעונה אחת. במקום להמשיך בהתאם לתוכנית המקורית, היטלר הורה לפצל את כוחות קבוצת ארמיות דרום. קבוצת ארמיות A (הארמייה ה-17 של הוורמאכט וארמיית הפאנצר הראשונה) נועדה לפנות דרומה ולכבוש את הקובאן והקווקז, בעוד קבוצת ארמיות B (הארמייה ה-6 של הוורמאכט וארמיית הפאנצר הרביעית) המשיכה להתקדם מזרחה באגן הדון עד לנהר הוולגה, על מנת לכבוש את סטלינגרד. ככל שהתקרבו הכוחות הגרמניים לסטלינגרד גברה ההתנגדות הסובייטית, וקצב ההתקדמות הגרמני הואט. הפיקוד הסובייטי הזרים תגבורות חזקות לאזור, ורק ב-23 באוגוסט הצליחו כוחות גרמניים לפרוץ עד נהר הוולגה מצפון לסטלינגרד. באותו יום התקיפו מאות מפציצים גרמניים את העיר, גרמו להרס רב והרגו כ-40 אלף אזרחים. הארמייה ה-6 וארמיית הפאנצר ה-4 המשיכו להתקדם באיטיות רבה לכיוון סטלינגרד מצפון ומדרום, וב-10 בספטמבר הגיעו אל הוולגה גם מדרום לעיר. הארמייה הסובייטית ה-62 שהגנה על סטלינגרד מצאה עצמה מבודדת ומכותרת משלושה עברים, כשגבה לנהר הוולגה.