הפיקוד העליון הסובייטי ריכז 3 "חזיתות" (המונח הסובייטי לקבוצת ארמיות) לקראת המתקפה הסופית על ברלין. לפי תוכנית המתקפה, שהושלמה בראשית אפריל 1945, נועדה החזית הבלארוסית הראשונה לתקוף מראשי הגשר שלה מעבר לאודר, ולכבוש את ברלין בהסתערות חזיתית. במקביל ינועו כוחות החזית הבלארוסית השנייה, שהחזיקה בשטח שבין חוף הים הבלטי לעמדות שתפסה החזית הבלארוסית הראשונה, במהירות צפונה במגמה להשתלט על הנמלים החשובים בצפון מזרח גרמניה ועל דנמרק, שהייתה תחת כיבוש נאצי.
החזית האוקראינית הראשונה, שנערכה על קו נהר נייסה מדרום לחזית של ז'וקוב, נועדה להתקדם לכיוון דרום מזרח, להשתלט על דרזדן ולייפציג, ולהמשיך בתנועה לכיוון צ'כוסלובקיה. חלק מכוחותיהם של גאורגי ז'וקוב ואיוואן קונייב נועדו לכתר את מרחב ברלין מצפון ומדרום בתנועת איגוף עמוקה.
סטלין השאיר פתוחה את האפשרות שהחזית האוקראינית הראשונה (בפיקוד איוואן קונייב) תפנה חלק מכוחותיה צפונה, ותתקוף את ברלין מדרום, במקרה שהמתקפה החזיתית של ז'וקוב תיתקל בקשיים. הוא ניצל את היריבות האישית העזה בין שני המצביאים הסובייטיים, כדי לדרבן אותם להשלים את כיבוש מרחב ברלין במהירות המרבית.
הכוחות הסובייטיים, שנועדו ליטול חלק במתקפה על ברלין, כללו 2.5 מיליון חיילים, יותר מ-6,000 טנקים ותותחים מתנייעים, 7,500 מטוסים ויותר מ-40 אלף כלי ארטילריה. הם נהנו מעדיפות עצומה בכוח אדם ובמיוחד בציוד כבד על הכוחות הגרמניים, שהגנו על מרחב ברלין.
הלחימה.
הקרב על רמת זלו.
המתקפה של החזית הבלארוסית הראשונה החלה ב-16 באפריל לפני עלות השחר. היא נפתחה בהפגזה ארטילרית אדירה על העמדות הגרמניות. ז'וקוב גם השתמש ב-143 זרקורים להגנה אווירית, שכוונו ישירות אל קווי ההגנה הגרמניים, בניסיון לסנוור את המגינים. מפקד קבוצת ארמיות ויסלה, גוטהרד היינריצי, הצליח לחזות מראש את עיתוי המתקפה הסובייטית, בהסתמכו על דיווחי המודיעין, והורה לכוחותיו לסגת לקו ההגנה השני לפני תחילת ההרעשה הארטילרית. מהלך זה הפחית במידה רבה את האפקטיביות של ההכנה הארטילרית הסובייטית. על גזרת רמת זלו הגנו שני קורפוסים של הארמייה הגרמנית התשיעית, שכללו כמאה אלף חיילים, למעלה מ-500 טנקים ותותחי סער וכמה מאות תותחי נ״מ 88 מ״מ, שהוסבו לשימוש כתותחי נ״ט כבדים.
הכוחות הסובייטיים התוקפים, ובראשם ארמיית המשמר השמינית בפיקוד גנרל וסילי צ'ויקוב (שמילאה תפקיד מרכזי במהלך קרב סטלינגרד), נתקלו בהתנגדות נחושה וקנאית של הכוחות הגרמניים, שהמטירו עליהם אש מעמדותיהם השולטות ברמת זלו, וכוחות השריון ספגו אבדות כבדות מאש הטנקים ותותחי הנ"ט הגרמניים. קצב ההתקדמות של כוחותיו של ז'וקוב היה איטי ביותר, והואט לכדי זחילה כשהכוחות התוקפים הגיעו למרגלות רמת זלו. ז'וקוב חסר הסבלנות, החליט להטיל לקרב את הארמיות המשוריינות שלו לפני שהושגה הבקעה של מערך ההגנה הגרמני העיקרי, ובכך גרם לעיכובים נוספים בהתקפה, עקב צפיפות יתר של כוחותיו, שלא יכלו להתפרס כראוי, ופקקים לוגיסטיים ענקיים שנוצרו באזורי העורף.
למרות הכישלון הסובייטי הראשוני, התקשו המגינים הגרמניים להחזיק מעמד לאורך זמן מול העדיפות הכמותית הגדולה של הכוחות התוקפים, ונדחקו אט אט לאחור. מהלומות הארטילריה הסובייטית ותקיפות בלתי פוסקות מהאוויר על העמדות הגרמניות ועל קווי האספקה שלהם, גרמו לאבדות כבדות והיקשו על תגבור הכוחות הגרמניים. ביום 19 באפריל, לאחר 4 ימי לחימה עקובה מדם, הצליחו הכוחות הסובייטיים להבקיע דרך רצועת ההגנה הגרמנית השלישית ולהשלים את כיבוש רמת זלו. חלק ניכר מהכוחות הגרמנים הסדירים שהגנו על דרכי הגישה לברלין הושמדו, ובכך הוכרעה למעשה המערכה על ברלין.
אין נתונים מדויקים באשר לאבדות הצבא האדום במהלך כיבוש רמת זלו, אבל אין ספק שהן היו כבדות. אנטוני ביוור העריך, שהחזית הבלארוסית הראשונה ספגה כ-30 אלף הרוגים במהלך קרב ההבקעה, אך לא ציין מהם המקורות עליהם הסתמך. מספר זה נראה מוגזם מאוד נוכח העובדה, שבמהלך כל המערכה במרחב ברלין (16 באפריל עד 8 במאי 1945) ספגה החזית הבלרוסית הראשונה 37,580 הרוגים ונעדרים בסך הכל. החוקר הרוסי אלכסיי איסייב, המסתמך על נתונים מהארכיונים הסובייטיים, טוען שהכוחות הסובייטיים ספגו כ-20 אלף נפגעים, מתוכם 5000–6000 הרוגים, במהלך הקרב. אולם מספר זה מתייחס רק לאבדות שספגו שתי הארמיות (מתוך 11 הארמיות של החזית הבלארוסית הראשונה), שעמדותיהן נמצאו היישר מול הרמה, שמשני עברי העיר Seelow. מספר הנפגעים הכולל, שספגו כוחותיו של ז'וקוב במהלך הבקעת מערך ההגנה של הארמייה התשיעית (16 עד 20 באפריל), היה כנראה 60-50 אלף איש, מתוכם למעלה מעשרת אלפים הרוגים. בנוסף לכך איבדה החזית במהלך קרב ההבקעה כ-750 טנקים ותומ"תים, ש-320 מתוכם הושמדו לחלוטין.
כיתור ברלין.
במקביל למתקפה של ז'וקוב על רמות זלו, תקפה החזית האוקראינית הראשונה את המערך הגרמני על נהר נייסה, שהוחזק על ידי ארמיית הפאנצר הרביעית. אף על פי שלקונייב (בניגוד לז'וקוב) לא היו ראשי גשר מעבר לנהר, הצליחו כוחותיו לצלוח את הנהר בחסות מסך עשן, ולהבקיע את מערך ההגנה הגרמני כבר ביום הראשון של המתקפה. אחד הגורמים העיקריים לכך היה, שהכוחות הגרמניים שניצבו מול קונייב היו חלשים בהרבה מהכוחות שהגנו על רמות אלו, וכללו מעט יחידות ניידות ומשוריינות. קונייב ריכז את שתי ארמיות הטנקים שבפיקודו באגפו הימני, כדי שיוכל להפנות אותם לכיוון ברלין, אם תתקבל הפקודה לכך. ההתקדמות האיטית של כוחותיו של ז'וקוב, וחוסר יכולתו להבקיע במהירות את מערך ההגנה הגרמני בחזיתו, גרמו לסטלין לתת לקונייב אישור להפנות חלק מכוחותיו לנוע לעבר ברלין מכיוון דרום. הכוחות הניידים של קונייב התקדמו במהירות רבה, תוך עקיפת כיסי ההתנגדות הגרמנית, חצו תוך כדי תנועה את נהר שפרה, והגיעו לפרברים הדרומיים של ברלין כבר ביום 21 באפריל.
ההתקדמות המהירה והמפתיעה של החזית האוקראינית הראשונה, הצליחה לנתק מעורפם קורפוס אחד מארמיית הפאנצר הרביעית, שני קורפוסים של הארמייה התשיעית, ואת חיל המצב של פרנקפורט על האודר (סך הכל 80 אלף עד 100 אלף חיילים) שנלכדו בין הכוחות המתקדמים של ז'וקוב וקונייב, באזור מיוער מדרום-מזרח לברלין, שזכה מאוחר יותר לכינוי "כיס האלבה". במהלך הימים הבאים התחוללו באזור זה קרבות קשים, כאשר הכוחות המכותרים ניסו לפרוץ את טבעת הכיתור הסובייטית פעם אחר פעם, בסיוע כוחות מהארמייה הגרמנית ה-12, שבאו לעזרתם ממערב. לפי מקורות גרמניים, כ-25 אלף חיילים הצליחו בסופו של דבר לפרוץ את הכיתור, לאחר שאיבדו את כל ציודם הכבד, לחבור עם הארמייה ה-12 ולהימלט מערבה אל מעבר לנהר האלבה בראשית חודש מאי 1945. הנותרים נהרגו או נפלו בשבי. הכוחות הסובייטיים ספגו אף הם אבדות ניכרות במהלך הלחימה סביב "כיס האלבה".
היטלר האמין, שניתן יהיה להחזיר את המצב לקדמותו באמצעות התקפות נגד מתמקדות מדרום ומצפון, שינתקו את ראשי החץ הסובייטיים מעורפם, וישמידו את כוחות החלוץ של הצבא האדום. הוא הורה לקורפוס הפאנצר אס אס ה-3, בפיקוד פליקס שטיינר, לתקוף מצפון את האגף הימני של ז'וקוב. במקביל קבוצת ארמיות מרכז, בפיקוד פרדיננד שרנר, נועדה לתקוף את האגף השמאלי (הדרומי) של קונייב מדרום, בעוד הארמייה התשיעית תוקפת את אגפו הימני מכיוון קוטבוס. אולם תוכניותיו ופקודותיו של היטלר היו מנותקות מהמציאות בשטח, והתבססו על יחידות שהיו קיימות בעיקר על הנייר. רוב הדיוויזיות של שטיינר, למשל, הועברו תחת פיקוד הארמייה התשיעית, כדי לסייע לה בקרב על רמות זלו. למרות, שמתקפת הנגד של שרנר על האגף הדרומי של החזית האוקראינית הראשונה נחלה הצלחה ראשונית מסוימת, היא נבלמה תוך זמן קצר. היחידות שנועדו לבצע את התקפות הנגד לא היו מסוגלות לבצע את המשימות שהוטלו עליהם נוכח העדיפות המספרית המכרעת של כוחות הצבא האדום במרחב ברלין. כאשר התברר להיטלר, במהלך ישיבת מטה שנערכה בשעות אחר הצהריים של ה-22 באפריל, שלא ניתן לבצע את התקפות הנגד המתוכננות, הוא נתקף בהתקף זעם, הכריז שהמלחמה אבודה, והודיע שאין בכוונתו לעזוב את ברלין, ושהוא יישאר בפיהררבונקר עד הסוף המר. באותו יום נכנסה ברלין לטווח אש הארטילריה של החזית הבלארוסית הראשונה, והתותחים הכבדים של החזית פתחו בהפגזה כבדה על מרכז העיר, הפגזה שנמשכה ללא הפוגה עד לכניעתה. הארמיות של ז'וקוב התקדמו לעבר הרבעים המזרחיים והצפון מזרחיים של העיר, בעוד שתי ארמיות מהחזית של קונייב מתקדמות לעבר הרבעים הדרומיים של העיר.
ב-20 באפריל תקפו כוחות החזית הבלארוסית השנייה, בפיקוד קונסטנטין רוקוסובסקי, את מערך ההגנה של ארמיית הפאנצר השלישית על נהר האודר העליון, בין שוודט ושטטין, ועד ה-22 בחודש הצליחו ליצור ראש גשר בעומק 15 ק"מ בגדה המערבית של הנהר. ביום 25 באפריל פרצו כוחות החזית מראש הגשר שלהם, הבקיעו את החזית הגרמנית, והחלו להתקדם במהירות לכיוון נמלי הים הבלטי. ביום 24 באפריל הושלם כיתור ברלין, כאשר כוחות החלוץ של ז'וקוב וקונייב נפגשו ממערב לעיר. ביום 26 באפריל נפגשו לראשונה כוחות אמריקנים מהדיוויזיה ה-69 של הארמייה הראשונה עם כוחות סובייטיים מדיוויזיית המשמר ה-58 של הארמייה החמישית (מהחזית האוקראינית הראשונה) בעיר טורגאו שעל נהר האלבה. פגישה היסטורית זו בין כוחות בעלות הברית המערביות לכוחות הצבא הסובייטי, פיצלה לשניים את השטח שנותר בשליטת הנאצים בגרמניה, והיוותה צעד סמלי חשוב לקראת הכנעת גרמניה הנאצית וסיום המלחמה ביבשת אירופה.
הלחימה בתוך ברלין.