חיל האוויר הסובייטי הושמד ברובו בשלבים הראשונים של הלחימה (בשעות הראשונות של הפלישה הושמדו כ-1200 מטוסים על הקרקע), והצבא האדום חסר הניסיון התקשה להתמודד עם הטקטיקה החדשה של הבליצקריג, שהופעלה על ידי הגרמנים באותה יעילות קטלנית בה הופעלה בצרפת ובמקומות אחרים. יחידות סובייטיות רבות לחמו עד הסוף, אך ההתנגדות הסובייטית לא הייתה מאורגנת, ומערך הפיקוד והשליטה של היחידות באזורי הגבול קרס כבר בשעות הראשונות של הפלישה. הפיקוד הסובייטי ניסה לעצור את ההתקדמות הגרמנית באמצעות התקפות נגד של כוחות העתודה שלו, אך אלו הוטלו למערכה טיפין טיפין, ללא מידע מדויק לגבי מיקום האויב וללא סיוע אווירי וחוסלו ללא קושי על ידי הכוחות הגרמניים המתקדמים. כתוצאה מכך, בחודש הראשון של המלחמה איבד הצבא האדום כ-90 אחוז מהטנקים שעמדו לרשותו במחוזות הצבאיים המערביים של ברית המועצות.
קבוצת ארמיות צפון התקדמה במהירות רבה דרך המדינות הבלטיות - ליטא, לטביה ואסטוניה - והערים פסקוב ונובגורוד אל עבר מטרתה - העיר לנינגרד. כוחותיה חצו את נהר דווינה כבר ב-26 ביוני, והגיעו לנהר לוגה ב-14 ביולי. קבוצת ארמיות מרכז התקדמה אף היא במהירות מזרחה, לאחר שכיתרה והשמידה את רוב כוחות החזית המערבית בקרב ביאליסטוק-מינסק, כבשה את כל שטח בלארוס, חצתה את נהר הדנייפר וכבשה את סמולנסק, תוך שהיא מכתרת מאות אלפי חיילים סובייטיים בסדרה של תנועות מלקחיים. קבוצת ארמיות דרום כבשה שטחים נרחבים בצפון-מערב אוקראינה, והשמידה שתי ארמיות סובייטיות במהלך קרב אומן, אך התקדמותה הייתה איטית יחסית, משום שחלק גדול מהכוחות הסובייטים שהוצבו באזורי הגבול רוכזו בגזרה הדרומית של החזית, והיא נאלצה להדוף שורת התקפות נגד רבות עוצמה, שהנחיתו עליה כוחות שריון סובייטים.
בשלושת השבועות הראשונים של הפלישה הגרמנית הייתה ההתקדמות הגרמנית מהירה ביותר, אך לקראת המחצית השנייה של חודש יולי היא הואטה מאוד, ובאזורים מסוימים אף נעצרה לחלוטין. בחזית הצפונית נבלמו הכוחות הנאציים, כשהגיעו אל קו לוגה המבוצר, כ-200 ק"מ ממערב ללנינגרד. בחזית המרכזית הצליח הצבא האדום לעצור את התקדמות קבוצת ארמיות מרכז ממזרח לסמולנסק, באמצעות הטלת כוחות עתודה חזקים למערכה.
בראשית אוגוסט חידשו הגרמנים את התקדמותם בחזית הדרומית והצפונית. קבוצת ארמיות דרום בסיוע כוחות רומניים והונגריים חצתה את נהר הדנייפר וכבשה חלק גדול משטח אוקראינה הדרומית. קבוצת ארמיות צפון איגפה את "קו לוגה", הגיעה עד לפרברי לנינגרד והשלימה את כיתור העיר, בה נלכדו כשלושה מיליון אזרחים. אולם בחזית המרכזית נבלמה לחלוטין התקדמות קבוצת ארמיות מרכז, והתקפות הנגד הסובייטיות גרמו לגרמנים אבדות ניכרות. ההתקדמות הגרמנית לכיוון מוסקבה חודשה רק בסוף ספטמבר.
בחודשים הראשונים של המלחמה עשתה ההנהגה הסובייטית מאמץ אדיר להעביר את מרכזי התעשייה שרובם הגדול רוכז לפני המלחמה באזורים המערביים של ברית המועצות והיו בסכנת כיבוש, אל אזורים מרוחקים במזרח ברית המועצות האירופאית ובסיביר. שינוע אלפי מפעלי התעשייה, על מיליוני העובדים שלהם והמכונות שלהם, באמצעות רכבות, למרחק מאות ואלפי ק"מ, והקמתם מחדש מהיסוד בתנאים קשים ביותר בחורף 1941/42, היה מבצע אדיר ממדים, הוא הצריך מאמצים וקורבנות עצומים ממיליוני האנשים שנטלו בו חלק. המבצע הציל חלק גדול מהתעשייה הסובייטית, והיה אחד הגורמים העיקריים לניצחון ברית המועצות במלחמה.
היערכות הכוחות הסובייטיים בצפון מערב אוקראינה לקראת קרב קייב חשפה אותם לסכנת כיתור. התעקשות הפיקוד הסובייטי לא לנטוש את קייב, בירת אוקראינה, וההתקדמות הגרמנית המהירה בדרום אוקראינה, יצרו בליטה גדולה בקו החזית באזור קייב. היטלר הורה להפנות חלק מכוחות קבוצת ארמיות מרכז, כולל קבוצת הפאנצר בפיקוד היינץ גודריאן והארמייה השנייה, דרומה כדי לכתר את הכוחות הסובייטים באזור קייב מצפון. סטלין סירב להענות לכל בקשות הפיקוד הצבאי המקומי לפנות את בליטת קייב לפני סגירת טבעת הכיתור הגרמני, וכתוצאה מכך ב-18 בספטמבר הושלם כיתורן של ארבע ארמיות סובייטיות באזור קייב, והגרמנים לקחו בשבי יותר מחצי מיליון שבויים. השמדת כוחות הצבא האדום במרחב קייב איפשרה לצבא הגרמני להשלים בקלות יחסית את כיבוש אוקראינה המזרחית, כולל העיר חרקוב, שנכבשה על ידי הנאצים בסוף אוקטובר 1941 במסגרת קרב חרקוב הראשון, והיוותה אסון צבאי וכלכלי לברית המועצות.
במקביל ניסתה קבוצת ארמיות צפון, שתוגברה על ידי קבוצת הפאנצר השלישית, לכבוש את העיר לנינגרד בסערה. ההתנגדות הנואשת של אזרחי לנינגרד, שהפכו את עירם למבצר, ושל כוחות הצבא האדום, והחשש מפני הסתבכות בלחימה ממושכת בשטח עירוני, גרמו לפיקוד הגרמני לוותר באמצע ספטמבר על ניסיונו לכבוש את העיר, לאחר שהכוחות הנאציים הגיעו למרחק קצר ממנה וכבשו חלק מפרבריה. הגרמנים החליטו להסתפק בהידוק המצור על העיר, כדי להרעיב את תושביה, בהתקפות מהאוויר ובהפגזות ארטילריה. המצור הגרמני על לנינגרד שבמהלכו מתו ברעב למעלה ממיליון אזרחים וחיילים סובייטיים, נפרץ לבסוף רק בינואר 1944.
קרב מוסקבה.
לאחר השלמת חיסול הכוחות הסובייטיים באזור קייב, הוכשרה הקרקע לחידוש המתקפה הגרמנית בחזית המרכזית. הצבא הגרמני ריכז בגזרה זו את מרבית כוחותיו הניידים, כולל "קבוצת פאנצר" שהועברה לשם מקבוצת ארמיות צפון, והשיג עדיפות ניכרת בנשק כבד (טנקים ומטוסים) על כוחות הצבא האדום שעמדו מולם, אשר כללו לא מעט יחידות מיליציית מתנדבים ("אופולצ'נייה") שאימונם וחימושם היו דלים. המתקפה הגרמנית על מוסקבה (מבצע טייפון) החלה ב-30 בספטמבר. בשלב הראשון ההתקדמות הגרמנית הייתה מהירה מאוד. רוב כוחות הצבא האדום שהגנו על דרכי הגישה למוסקבה כותרו בשני "כיסים" גדולים באזורי ויאזמה ובריאנסק, ובאמצע אוקטובר כבר הגיעו הכוחות הממונעים הגרמניים בגזרות מסוימות למרחק כ-30 ק"מ מפרברי מוסקבה. לקראת סוף אוקטובר נבלמה תנופת ההסתערות הגרמנית וההתקדמות הגרמנית הואטה מאוד כתוצאה מהתקשחות ההתנגדות של הכוחות הסובייטיים, התארכות קווי האספקה ובוץ עמוק מגשמי הסתיו, שהקשה מאוד על תנועת השריון וכלי הרכב הממונעים הגרמניים. ההתנגדות העיקשת של הכוחות הסובייטיים שכותרו על ידי הכוחות הגרמניים בתחילת המתקפה, ריתקה כוחות גרמניים גדולים, ובכך נתנה לפיקוד הסובייטי את הזמן הדרוש להזרמת כוחות עתודה חדשים להגנה על קווי ההגנה שהוכנו במרחק קצר ממוסקבה. כישלון ההסתערות הגרמנית הראשונה על מוסקבה נתן לפיקוד העליון הסובייטי שהות לרכז עתודות אסטרטגיות גדולות מאחרי מוסקבה ולחזק את קווי ההגנה מסביב לעיר. במחצית השנייה של נובמבר חידשו הגרמנים את ניסיונם לכבוש את מוסקבה, אולם הפעם התקדמותם הייתה איטית ועלתה להם במחיר אבדות כבדות. בגזרה המרכזית, בנתיב הגישה הקצר ביותר למוסקבה, לא הצליחו הגרמנים להשיג התקדמות משמעותית, אך מצפון ומדרום למוסקבה הם הצליחו להתקרב אל העיר. לקראת סוף נובמבר הגיעו הגרמנים למרחק קצר מאיסטרה, כ-25 ק"מ מצפון מערב למוסקבה, אך כל נסיונותיהם לכבוש את העיר טולה, שעצרה את התקדמות כוחותיו של גודריאן אל מוסקבה מדרום, או לנתק את כביש טולה-מוסקבה עלו בתוהו. בשלב זה, החלו תנאי מזג האוויר הקשים והקור העז להוות גורם משמעותי. הצבא הגרמני סבל ממספר רב של נפגעים מכוויות כפור, והציוד הקרבי שלו לא תיפקד כהלכה בקור העז. השילוב של ההתנגדות הסובייטית הנחושה ותנאי מזג האוויר הקשים גרמו לעצירה כמעט מוחלטת של ההתקפה הגרמנית לקראת ראשית דצמבר 1941.
כאשר תשה תנופת ההתקפה הגרמנית עבר הצבא האדום למתקפת נגד, שהחלה ב-5 בדצמבר. הפיקוד העליון הסובייטי (הסטאבקה) הצליח לרכז בחשאי כוחות עתודה חזקים, שכללו, בין השאר, כ-25 דיווזיות רעננות שהועברו מהמזרח הרחוק וסיביר, לצורך מתקפת הנגד. הפיקוד הגרמני הופתע לחלוטין מעוצמת המתקפה הסובייטית, משום שהעריך שברית המועצות מיצתה עד תום את עתודות כוח האדם שלה. המטרה העיקרית של מתקפת הנגד הייתה הסרת האיום הגרמני על מוסקבה. מטרות מישניות היו פריצת המצור הגרמני על לנינגרד, וכיבוש מחדש של אגן הדונייץ וחצי האי קרים. במהלך חודש דצמבר ובמחצית הראשונה של ינואר 1942 זכתה מתקפת הנגד להישגים ניכרים, בעיקר באזור מוסקבה. החיילים הגרמנים שנאלצו להילחם בתנאי מזג אוויר קשים במיוחד, ללא ציוד מתאים ללחימה בחורף הרוסי, ספגו אבדות כבדות. במספר מקרים נאלצו הגרמנים לסגת במהירות, מחשש שינותקו מעורפם, ונטשו כמויות גדולות של ציוד כבד. הביגוד וציוד הלחימה הסובייטי היו מותאמים היטב ללחימה בתנאי חורף, והצבא האדום ניצל עובדה זו עד תום. קבוצת ארמיות מרכז הגרמנית עמדה בפני כיתור, והפיקוד שלה ביקש אישור לסגת לאזור סמולנסק. אולם היטלר לקח לידיו את הפיקוד, הדיח חלק ממפקדיו הבכירים, וסירב לאשר נסיגה כללית. הוא פקד על הכוחות הגרמניים להחזיק מעמד בכל מחיר, ולא לסגת גם במקרה של סכנת כיתור. במקרה זה, ההתעקשות של היטלר הוכיחה את עצמה. השליטה האווירית ממנה נהנו הגרמנים, איפשרה להם לתספק את כוחותיהם בדרך האוויר גם כאשר הם כותרו על ידי הצבא האדום, והתחזקות ההתנגדות הגרמנית בלמה את תנופת המתקפה הסובייטית. מצפון ומדרום למוסקבה הצליח הצבא האדום לשחרר שטחים נרחבים ולהתקדם למרחק של עד 350 ק"מ ממוסקבה, אולם במרכז הצליחו הגרמנים להאחז במבלט המבוצר רז'ב-גז'צק-ויאזמה, במרחק פחות מ-180 ק"מ ממערב למוסקבה, ומשם המשיכו לאיים על הבירה הסובייטית.