Бои за город начались 24 апреля. На следующий день советские войска замкнули кольцо вокруг столицы Германии и начали планомерный штурм. Главной задачей на следующие несколько суток ставилось взятие трех огромных зенитных батарей в бетонных башнях и выход к хорошо укрепленному центру города.
Силы РККА в 4 раза превосходили обороняющихся в численности пехоты и в десятки раз по числу стволов артиллерии и техники. Большая часть гарнизона Берлина состояла из Гитлерюгенда и Фолькштурма — недавно мобилизованных стариков и женщин с экипировкой низкого качества. Все они считались Советским Союзом комбатантами. Боевые части Вермахата и СС были сосредоточены в центре города.
В ночь на 28 апреля бойцы РККА подошли к правительственному кварталу, где начались одни из самых жестоких боев за всю операцию.
На рассвете 30 апреля ценой немалых потерь было захвачено здание министерства внутренних дел. Путь на рейхстаг был открыт.
В этот же день Адольф Гитлер вместе с Евой Браун, овчаркой Блонди, Геббельсом и его семьей наложили на себя руки в стенах правительственного бункера.
Поздно вечером 30 апреля немецкая сторона запросила о прекращении огня для переговоров. Им передали предложение подписать безоговорочную капитуляцию, но новое правительство отказалось и штурм был продолжен.
Попытка взять главное здание Берлина с ходу оказалась неудачной. Вокруг постройки был вырыт противотанковый ров, заполненный водой, что затрудняло лобовую атаку. Несмотря на большие потери, все, способные атаковать, были собраны в сводные батальоны на первой линии для последнего решающего броска.
В основном рейхстаг и рейхсканцелярию защищали войска СС: подразделения дивизии СС «Нордланд», французский батальон Фене из дивизии СС «Шарлемань», латышский батальон 15-й гренадерской дивизии СС, а также подразделения личной охраны Адольфа Гитлера.
Днем 30 апреля на лестнице у входа в рейхстаг лейтенант Рахимжан Кошкарбаев и рядовой Григорий Булатов установили первое красное знамя. Утром 1 мая флаг развевался над главным куполом здания, но бои за подвалы и катакомбы продолжались до ночи 2 мая.
В 6 часов утра 2 мая генерал артиллерии Вейдлинг в сопровождении трёх немецких генералов перешёл линию фронта и сдался в плен. Через час, находясь в штабе 8-й гвардейской армии, он подписал приказ о капитуляции. После этого сопротивление немцев стало повсеместно затихать.
Отдельным подразделениям, в том числе и солдатам СС, удалось прорваться на Запад и сдаться в плен союзникам.
В ходе штурма берлина каждый шестой советский солдат был убит. Ранения получил каждый второй. Всего советская сторона потеряла около 75 тысяч убитыми и 300 тысяч раненными. В городских боях РККА потеряла до половины всех танков, задействованных в операции (661 машина).
Из 120-тысячного гарнизона Берлина погибло или было ранено 100 тысяч человек. Жертвы гражданского населения приблизительно оцениваются в 175 тысяч человек. Тяжело установить, сколько людей погибло от голода, сколько под завалами, а сколько от бомбардировок.
Еще до окончания боев командование СССР озаботилось обеспечением берлинцев продовольствием. После окончания боев в городе была введена карточная система, развернуты мобильные пункты медпомощи и налажены поставки провианта. На одного работающего человека в день полагалось 428 грамм хлеба, 70 грамм мяса, 200 грамм сахара и 50 грамм кофе. В детские пайки были добавлены молоко и овощи.
Восстановление работы метро, канализации, водопровода, разминирование и проведение электроэнергии во всех зонах оккупации города-миллионника растянулось на следующие полтора года.