Сопротивление в Восточной Пруссии и Венгрии стоило немцам так дорого, что армии, противостоявшие центру русских войск, были сильно ослаблены. Всего немцы, по—видимому, имели 7 армий в Словакии и Венгрии (в том числе 3 венгерские), 4 армии на Верхней Висле и 4 армии в Восточной Пруссии. Кроме того, главным образом на бумаге, существовало еще значительное количество недавно отмобилизованных частей фольксштурма, обладавших невысокими боевыми качествами. Если исключить части фольксштурма и чисто гарнизонные войска, то вряд ли германские полевые армии насчитывали более 100 ослабленных дивизий, практически не имевших запасов горючего для самолетов, танков и транспорта.
На юге зимняя кампания открылась 29 ноября наступлением маршала Толбухина на Будапешт. Выступив из района южнее города Мохач, откуда Сулейман Великолепный двинулся на Будапешт в 1526 г. Толбухин направил свои войска на запад к озеру Балатон и на север в направлении озера Веленце. 8 декабря он развернул свои главные силы между Лепешенем, у северной оконечности Балатона, и Эрчи, что южнее Будапешта. Тем временем Малиновский наступал на венгерскую столицу с востока, его северный фланг двигался на Вац, расположенный в излучине Дуная. С боем форсировав реку Ипель, Малиновский подошел к Комарно — главной германской базе на венгерском фронте.
Для того чтобы обеспечить там свои склады, а также укоротить фронт, командующий немецкими и венгерскими армиями генерал Фризнер принял смелое и своеобразное решение. Он решил оборонять фронт на реке Грон и между рекой Драва и озером Балатон, оставить сильный гарнизон в Будапеште и покинуть город. Наконец, он хотел сосредоточить ударную группу позади сектора, связывающего вышеуказанные оборонительные участки, а именно между Комарно и озером Балатон. Фризнер хотел отразить любую попытку обойти или атаковать с севера, юга или запада ту половину венгерской столицы, которая называется Будой. Слабым местом его плана было то, что у него не было достаточного количества войск, чтобы занять линию реки Грон крупными силами.
20 декабря Толбухин взял на западном берегу озера Веление Секешфехервар и, пройдя холмы Вертеш, захватил на Дунае Эстергом. Затем во взаимодействии с Малиновским он завершил окружение Будапешта. Это дало Фризнеру ту возможность, которую он ожидал. 2 и 3 января он предпринял две сильные контратаки: одну между Комарно и Эстергомом, а другую между Комарно и Бичке. Взяв обратно 5 января Эстергом, он затем сбил русских с холмов Вертеш. Однако снова взять Бичке он не смог, гак как 10 января Малиновский прорвал линию оборонительных позиций на реке Грон и подошел к Комарно на расстояние 2 миль. Это наступление заставило Фризнера перенести усилия на север от Дуная, и хотя он остановил наступление Малиновского, но в момент переброски немецких сил Толбухин вплотную подошел к Буде.
18 января русские полностью заняли Пешт. Последовательные наступательные операции так истощили ударную группу Фризнера, что он был вынужден бросить Буду на произвол судьбы. В начале января Малиновский начал последний штурм города и 13 января после отчаянной борьбы овладел опорными пунктами на Дворцовых холмах и на Гелертхеги. Таким образом, второй этап операций на Дунае закончился открытием дороги на Вену. Тем временем на севере была очищена дорога на Берлин.
Западнее Вислы, между рекой Пилица и Карпатами, русские нанесли два сокрушительных удара по четырем германским армиям, которыми командовал генерал Гарпе. Один удар нанес маршал Конев, начавший наступление с сандомирско—барановского плацдарма. Другой удар нанес со своих двух главных плацдармов западнее Магнушева и у Казимежа маршал Жуков. В то же самое время южнее Конева фронт генерала Петрова двинулся на Ясло, севернее перевала Дукля, ведущего через Карпаты.
Наступление Конева началось 12 января, а Жукова — 14 января. Тому и другому предшествовала сильная артиллерийская подготовка. Наступления в обоих случаях быстро завершились прорывом немецкой обороны. Правое крыло Конева задержалось в Кельце, за который немцы отчаянно дрались, в то время как его левое крыло быстро продвигалось вперед. Правое крыло фронта Жукова пробилось через Пилицу, достигло дороги Варшава — Радом и, повернув по ней на север, подошло к польской столице с запада. Немцы эвакуировали Варшаву, и 17 января город был занят русскими. В это же время войска левого крыла Жукова захватили Радом. Сразу после этого последовал ряд других катастроф. Петров взял Ясло. Немцы оставили Краков; 19 января этот город был занят левым крылом Конева. Одинаково важным было взятие в этот же день Жуковым Гостьшида, Кутно и Лодзи.