В то время как разведывательные отряды на 2-м Белорусском фронте вели бои за дамбы противника, в наступление перешли главные силы 1-го Белорусского и 1-го Украинского фронтов. Оно началось утром 16 апреля при поддержке авиации 16-й и 2-й воздушных армий. В полосе 1-го Белорусского фронта пехота и танки, перейдя в атаку при свете мощных зенитных прожекторов, продвинулись на 1,5—2 км. Однако вскоре противник стал оказывать все более возрастающее сопротивление, что вынудило советские войска снизить темп продвижения. Поэтому командующий 1-м Белорусским фронтом был вынужден отступить от плана операции и ввести в сражение 1-ю и 2-ю гвардейские танковые армии, которые втянулись в упорные бои и не смогли оторваться от пехоты. Войскам ударной группировки фронта пришлось последовательно прорывать несколько полос глубоко эшелонированной обороны. Оборону на основных участках у Зееловских высот удалось преодолеть лишь к исходу 17 апреля. В тот же день Ставка ВГК потребовала от Жукова обеспечить более энергичное наступление подчиненных ему войск, а командующим 1-м Украинским и 2-м Белорусским фронтами – оказать содействие наступлению 1-го Белорусского фронта. Маршалу Рокоссовскому директивой № 11071 от 18 апреля приказывалось:
К исходу 19 апреля войска 1-го Белорусского фронта завершили прорыв третьей полосы немецкого рубежа обороны на Одере. Однако они продвигались медленнее, чем планировалось, так как были стеснены в маневре и не могли быстро расширить полосу прорыва. На правом крыле ударной группировки фронта его 47-я и 3-я ударная армии успешно продвигались вперед для охвата Берлина с севера и северо-запада. На левом крыле создались условия для обхода франкфуртско-губенской группировки противника с севера и отсечения ее от района Берлина.
Войска 1-го Украинского фронта форсировали Нейсе, в первый день прорвали главную полосу обороны врага и на 1—1,5 км вклинились во вторую полосу. На следующий день в сражение были введены 25-й и 4-й гвардейский танковые корпуса, а также передовые отряды корпусов 3-й и 4-й гвардейских танковых армий. К исходу 18 апреля войска фронта завершили прорыв нейсенского рубежа обороны, форсировали Шпре и создали условия для окружения Берлина с юга. Для обеспечения форсирования 3-й гвардейской танковой армией р. Шпре и Тельтов-канала с 19 по 23 апреля на это направление было переброшено 5 артиллерийских дивизий. На дрезденском направлении войска 2-й армии Войска Польского и 52-й армии также завершили прорыв тактической зоны обороны. Ставка ВГК, учитывая замедленное продвижение 1-го Белорусского фронта, решила осуществить маневр на окружение берлинской группировки ударом танковых армий 1-го Украинского фронта по Берлину с юга.
На 2-м Белорусском фронте события развивались следующим образом.
19 апреля маршал Рокоссовский доложил Сталину, что в назначенный срок войска готовы перейти в наступление. В ночь перед наступлением неприятельские позиции подверглись ударам бомбардировочной авиации. Одновременно на участках всех армий шла напряженная борьба специальных отрядов за расширение захваченных плацдармов на западном берегу Вест-Одера и за полный захват поймы. В междуречье на дамбах происходило накапливание сил. На всем протяжении реки от Альтдама до Шведта кипела напряженная работа. Подготавливались и сплавлялись понтоны. На пойме прокладывались щитовые дороги через топи. Было подготовлено множество легких переносных лодок. Чтобы ввести противника в заблуждение, демонстрировалась подготовка к форсированию водной преграды севернее Штеттина. Части 19-й и 2-й ударной армий, прикрываясь дымами, поднимали там неистовый шум. Вообще-то они и на самом деле готовили десанты через пролив Дивенов.