Все время с начала операции командование группы армий «Центр» стремилось сорвать наступление советских войск. 20 апреля немецкие войска нанесли первый контрудар на левом фланге 1-го Украинского фронта и потеснили войска 52-й армии и 2-й армии Войска Польского. 23 апреля последовал новый мощный контрудар, в результате которого оборона на стыке 52-й армии и 2-й армии Войска Польского была прорвана и немецкие войска продвинулись на 20 км в общем направлении на Шпремберг, угрожая выйти на тылы фронта.
2-й Белорусский фронт (20 апреля – 8 мая). С 17 по 19 апреля войска 65-й армии 2-го Белорусского фронта под командованием генерал-полковника Батова П.И., провели разведку боем и передовыми отрядами овладели междуречьем Одера, облегчив тем самым последующее форсирование реки. Утром 20 апреля в наступление перешли главные силы 2-го Белорусского фронта: 65, 70 и 49-я армии. Форсирование Одера происходило под прикрытием артиллерийского огня и дымовых завес. Наиболее успешно наступление развивалось на участке 65-й армии, в чем была немалая заслуга инженерных войск армии. Наведя к 13 часам две 16-тонные понтонные переправы, войска этой армии к вечеру 20 апреля захватили плацдарм шириной 6 и глубиной 1,5 км.
Более скромный успех был достигнут на центральном участке фронта в полосе 70-й армии. Левофланговая 49-я армия встретила упорное сопротивление и успеха не имела. Весь день и всю ночь 21 апреля войска фронта, отбивая многочисленные атаки немецких войск, упорно расширяли плацдармы на западном берегу Одера. В сложившейся обстановке, командующий фронтом К. К. Рокоссовский решил направить 49-ю армию по переправам правого соседа 70-й армии, а затем вернуть в свою полосу наступления. К 25 апреля в результате ожесточенных боев войска фронта расширили захваченный плацдарм до 35 км по фронту и до 15 км в глубину. Для наращивания ударной мощи на западный берег Одера были переправлены 2-я ударная армия, а также 1-й и 3-й гвардейские танковые корпуса. На первом этапе операции 2-й Белорусский фронт своими действиями сковал главные силы 3-й немецкой танковой армии, лишив ее возможности помочь сражающимся под Берлином. 26 апреля соединения 65-й армии штурмом овладели Штеттином. В дальнейшем армии 2-го Белорусского фронта ломая сопротивление противника и громя подходящие резервы, упорно продвигались на запад. 3 мая 3-й гвардейский танковый корпус Панфилова юго-западнее Висмара установил связь с передовыми частями 2-й британской армии.
Ликвидация франкфуртско-губенской группировки
К концу 24 апреля соединения 28-й армии 1-го Украинского фронта вошли в соприкосновение с частями 8-й гвардейской армии 1-го Белорусского фронта, тем самым окружив юго-восточнее Берлина 9-ю армию генерала Буссе и отрезав ее от города. Окруженная группировка немецких войск стала именоваться – франкфуртско-губенской. Теперь перед советским командованием встала задача ликвидации 200-тысячной группировки противника и недопущение ее прорыва в Берлин или на запад. Для выполнения последней задачи 3-я гвардейская армия и часть сил 28-й армии 1-го Украинского фронта заняли активную оборону на пути возможного прорыва немецких войск. 26 апреля 3-я, 69-я, и 33-я армии 1-го Белорусского фронта приступили к окончательной ликвидации окруженных частей. Однако враг не только оказывал упорное сопротивление, но и неоднократно предпринимал попытки вырваться из окружения. Искусно маневрируя и умело создавая превосходство в силах на узких участках фронта, немецким войскам дважды удавалось прорывать кольцо окружения. Однако каждый раз советское командование принимало решительные меры для ликвидации прорыва. Вплоть до 2 мая окруженные части 9-й немецкой армии предпринимали отчаянные попытки пробиться через боевые порядки 1-го Украинского фронта на запад, на соединение с 12-й армией генерала Венка. Лишь отдельным малочисленным группам удалось просочиться через леса и уйти на запад.
Штурм Берлина (25 апреля – 2 мая). В 12 часов дня 25 апреля замкнулось кольцо вокруг Берлина, когда 6-й гвардейский мехкорпус 4-й гвардейской танковой армии форсировал реку Хафель и соединился с частями 328-й дивизии 47-й армии генерала Перхоровича. К тому времени, по оценке советского командования, гарнизон Берлина насчитывал не менее 200 тысяч человек, 3 тысячи орудий и 250 танков. Оборона города была тщательно продумана и хорошо подготовлена. В ее основе лежала система сильного огня, опорных пунктов и узлов сопротивления. Чем ближе к центру города, тем оборона становилась плотнее. Особую прочность ей придавали массивные каменные постройки с большой толщиной стен. Окна и двери многих зданий заделывались и превращались в амбразуры для ведения огня. Улицы перекрывались мощными баррикадами толщиною до четырех метров. Обороняющиеся имели большое количество фаустпатронов, которые в обстановке уличных боев оказались грозным противотанковым оружием. Немаловажное значение в системе обороны врага имели подземные сооружения, которые широко использовались противником для маневра войск, а также для укрытия их от артиллерийских и бомбовых ударов.
Битва за Берлин
К 26 апреля в штурме Берлина принимали участие шесть армий 1-го Белорусского фронта (47-я, 3-я и 5-я ударные, 8-я гвардейская, 1-я и 2-я гвардейские танковые армии) и три армии 1-го Украинского фронта (28-я, 3-я и 4-я гвардейские танковые). Учитывая опыт взятия крупных городов, для боев в городе создавались штурмовые отряды в составе стрелковых батальонов или рот, усиленных танками, артиллерией и саперами. Действия штурмовых отрядов, как правило, предварялись короткой, но мощной артиллерийской подготовкой.
К 27 апреля в результате действий глубоко продвинувшихся к центру Берлина армий двух фронтов группировка противника в Берлине вытянулась узкой полосой с востока на запад – шестнадцать километров в длину и два-три, в некоторых местах пять километров в ширину. Бои в городе не прекращались ни днем, ни ночью. Квартал за кварталом советские войска «прогрызали» оборону противника. Так, к вечеру 28 апреля, части 3-й ударной армии вышли в район рейхстага. В ночь на 29 апреля действиями передовых батальонов под командованием капитана С.А. Неустроева и старшего лейтенанта К.Я. Самсонова был захвачен мост Мольтке. На рассвете 30 апреля штурмом ценой немалых потерь было захвачено здание министерства внутренних дел, соседствовавшее со зданием парламента. Путь на рейхстаг был открыт.
30 апреля 1945 в 21.30, части 150-й стрелковой дивизии под командованием генерал-майора В.М. Шатилова и 171-й стрелковой дивизии под командованием полковника А.И. Негоды штурмом овладели основной частью здания рейхстага. Оставшиеся гитлеровские части оказывали упорное сопротивление. Драться приходилось за каждое помещение. Ранним утром 1 мая над рейхстагом был поднят штурмовой флаг 150-й стрелковой дивизии, однако бой за рейхстаг продолжался еще весь день и только в ночь на 2 мая гарнизон рейхстага капитулировал.
1 мая в руках немцев остались только Тиргартен и правительственный квартал. Здесь располагалась имперская канцелярия, во дворе которой находился бункер ставки Гитлера. В ночь на 1 мая по предварительной договоренности в штаб 8-й гвардейской армии прибыл начальник генерального штаба немецких сухопутных войск генерал Кребс. Он сообщил командующему армией генералу В.И. Чуйкову о самоубийстве Гитлера и о предложении нового правительства Германии заключить перемирие. Сообщение тут же было передано Г. К. Жукову, который сам позвонил в Москву. Сталин подтвердил категорическое требование о безоговорочной капитуляции. В 18 часов 1 мая новое правительство Германии отклонило требование о безоговорочной капитуляции, и советские войска вынуждены были с новой силой продолжить штурм.
В первом часу ночи 2 мая радиостанциями 1-го Белорусского фронта было получено сообщение на русском языке: «Просим прекратить огонь. Высылаем парламентеров на Потсдамский мост». Прибывший в назначенное место немецкий офицер от имени командующего обороной Берлина генерала Вейдлинга сообщил о готовности берлинского гарнизона прекратить сопротивление. В 6 утра 2 мая генерал артиллерии Вейдлинг в сопровождении трех немецких генералов перешел линию фронта и сдался в плен. Через час, находясь в штабе 8-й гвардейской армии, он написал приказ о капитуляции, который был размножен и при помощи громкоговорящих установок и радио доведен до частей противника, обороняющихся в центре Берлина. По мере доведения этого приказа до обороняющихся сопротивление в городе прекращалось. К концу дня войска 8-й гвардейской армии очистили от противника центральную часть города. Отдельные части не пожелавшие сдаваться в плен, пытались прорваться на запад, но были уничтожены или рассеяны.