С 29 октября 1944 по 13 февраля 1945 года силами 2-го и 3-го Украинских фронтов проводилась Будапештская стратегическая наступательная операция с целью разгрома немецких войск в Венгрии и вывода этой страны из войны. Кроме того, наступление предполагало блокировку вражеских войск на Балканах. В сентябре 1944 года советские войска вышли на венгерскую границу и 15 октября регент Миклош Хорти заявил о заключении перемирия с Советским Союзом. Однако Германия провела операцию «Панцерфауст», в ходе которой отрядом СС был похищен и взят в заложники сын Миклоша Хорти. Это вынудило регента аннулировать перемирие и передать власть Ференцу Салаши, лидеру профашистской партии «Скрещённые стрелы». Гитлер был полон решимости удержать венгерскую столицу.
К началу наступательной операции 2-й Украинский фронт (в составе 5 советских и 2 румынских общевойсковых, 1 танковой и 1 воздушной армий находился на рубеже Чоп — Польгар — восточный берег р. Тиса до Тисауга и далее до Баи. Войска 3-го Украинского фронта, завершив Белградскую операцию, к началу операции только начинали переброску в Венгрию (57-я армия, усиленная двумя механизированными корпусами). Задача состояла в нанесении фронтального массированного удара в район Будапешта, выведении Венгрии из войны, создании предпосылок для наступления в Австрии и Чехии. Общая численность наступающей группировки составляла 519 тысяч человек.
Советским войскам противостояла немецкая группа армий «Юг» в составе 35 дивизий и трёх бригад, а также остатки венгерской армии. Ее общая численность достигала 250 тысяч человек. Будапешт был сильно укреплен, и имел три рубежа обороны, которые упирались своими флангами в Дунай севернее и южнее города.
Карта-схема Будапештской операции.
Наступление на Будапешт началось силами 2-го Украинского фронта 29 октября. Советское командование решило нанести главный удар силами 46-й армии, 2-го и 4-го гвардейских механизированных корпусов юго-восточнее Будапешта и овладеть им. В то же время 7-я гвардейская армия должна была нанести вспомогательный удар из района северо-восточнее города Сольнок и захватить плацдарм на западном берегу реки Тиса. Остальные силы фронта получили задачу наступать в направлении на Мишкольц с тем, чтобы сковать противостоявшие войска противника и не допустить их переброски в район Будапешта. 3-й Украинский фронт должен был завершить сосредоточение главных сил в районе Баната и одновременно передовыми частями захватить плацдармы на правом берегу Дуная на территории Венгрии.
Войска левого крыла 2-го Украинского фронта прорвали оборону противника и после ввода в сражение 2-го и 4-го гвардейских механизированных корпусов начали стремительное продвижение. 2 ноября корпуса вышли с юга на ближние подступы к Будапешту, но ворваться в город с ходу не смогли. Немцы перебросили сюда из района Мишкольца три танковых и одну моторизованную дивизию, которые оказали упорное сопротивление. 4 ноября советская ставка приказала командованию 2-го Украинского фронта расширить полосу наступления с тем, чтобы разгромить будапештскую группировку противника ударами с севера, востока и юга. 11-26 ноября войска фронта прорвали вражескую оборону между Тисой и Дунаем и, продвинувшись в северо-западном направлении до 100 км, подошли к внешнему оборонительному обводу Будапешта, однако и на этот раз не смогли овладеть городом. Столкнувшись с упорным сопротивлением противника, советские войска приостановили атаки.
В начале декабря снова было предпринято наступление на Будапешт силами центра и южного крыла 2-го Украинского фронта. В результате советские войска вышли к Дунаю севернее и северо-западнее Будапешта, отрезав 5 декабря будапештской группировке противника пути отступления на север. Войска 3-го Украинского фронта к этому времени форсировали Дунай при активном содействии кораблей Дунайской военной флотилии, вышли северо-восточнее озера Балатон и создали условия для совместных действий со 2-м Украинским фронтом.
Немецкие войска в обороне Будапешта.
Перебросив подкрепления, противник предпринял с 7 декабря сильные контрудары, которые войска 46-й армии успешно отразили. 57-я армия 3-го Украинского фронта, форсировав Дунай 7-9 ноября, в ходе Апатин-Капошварской операции к 9 декабря вышла в район к югу от озера Балатон. Со второй половины ноября на правом берегу Дуная начала боевые действия прибывшая в состав 3-го Украинского фронта 4-я гвардейская армия, войска которой соединились в районе озера Веленце с 46-й армией. Таким образом, будапештская группировка противника была охвачена советскими войсками с севера и юго-запада.
10-20 декабря войска обоих фронтов готовились к новому наступлению. Они должны были совместными ударами с северо-востока, востока и юго-запада завершить окружение, разгромить будапештскую группировку и овладеть, наконец, Будапештом. Начав наступление, советские войска прорвали оборону противника севернее и юго-западнее Будапешта. 21 декабря в полосе действий 7-й гвардейской армии в районе Немце, Сакалоша, Шагов немецкие войска нанесли контрудар, но попали под удары во фланг и тыл и были отброшены с тяжёлыми потерями. 26 декабря советские войска соединились западнее Будапешта в районе города Эстергома, полностью окружив Будапештскую группировку противника, в котёл попало 188 тысяч человек, в том числе венгерские подразделения и части СС.
29 декабря советское командование направило окружённому гарнизону ультиматум о капитуляции. Однако парламентеров немцы расстреляли. После этого начались ожесточённые бои по ликвидации гарнизона, которые продолжались в течение января и первой половины февраля 1945 года.