После окончания 2-м Украинским фронтом Дебреценской наступательной операции Ставка Верховного Главнокомандования приказала ему нанести фронтальный удар войсками левого крыла на северо-запад с задачей овладеть Будапештом. 46-я армия, 2-й и 4-й гвардейские механизированные корпуса в период с 29 октября по 2 ноября прорвали вражескую оборону и вышли на подступы к венгерской столице с юга. Но дальнейший путь туда им преградил свежий вражеский танковый корпус, занявший заранее подготовленные оборонительные позиции. Ослабленные и уставшие в непрерывных наступательных боях, наши войска не смогли преодолеть его оборону. После недельной паузы 2-й Украинский фронт с 11 по 26 ноября нанес второй фронтальный удар по Будапешту, на этот раз с востока и силами 52-й, 7-й гвардейской и 46-й армий. Но и на восточном направлении вражеские войска приостановили наше наступление.
5 декабря фронт возобновил боевые действия с намерением овладеть Будапештом двумя охватывающими ударами: с северо-востока силами 7-й гвардейской и 6-й гвардейской танковой армий и конно-механизированной группы, а с юго-запада — силами 46-й армии. 9 декабря северо-восточная группировка вышла в район Шаги, 60 километров севернее Будапешта, и на восточный берег Дуная, севернее венгерской столицы, а южная, форсировав Дунай южнее Будапешта, захватила плацдарм тактического значения, но продвинуться далее в северо-западном направлении не смогла.
12 декабря Ставка обязала 2-й и 3-й Украинские фронты окружить будапештскую группировку противника, разгромить ее и овладеть Будапештом. 46-я армия была передана 3-му Украинскому фронту. Во исполнение этой директивы 2-й Украинский фронт, наступая войсками левого крыла, должен был нанести главный удар из района Шаги, выйти на Дунай в районе Эстергома, северо-западнее Будапешта, отрезав пути отхода будапештской группировке.
Войска 3-го Украинского фронта, закончив к этому времени Белградскую операцию, были перегруппированы на восточный берег Дуная в район Байя, 140 километров южнее Будапешта. В этом же районе сосредоточивалась 4-я гвардейская армия, переданная фронту из резерва Ставки. Воспользовавшись тем, что немецко-фашистское командование приковало все свое внимание к Будапешту, 57-я армия 7–9 ноября форсировала Дунай в районе Батина и Апатии, 190 километров южнее Будапешта, и захватила плацдарм. К исходу 26 ноября туда переправилась и часть войск 4-й гвардейской армии. Усилиями этих двух армий к концу ноября плацдарм был расширен по фронту до 200 и в глубину от 35 до 60 километров. Они угрожали вражеским коммуникациям западнее Будапешта.
Продолжая выполнять директиву Ставки от 12 декабря, командующий 3-м Украинским фронтом решил силами 46-й и 4-й гвардейской армий, усиленными 2-м и 4-м механизированными корпусами, нанести главный удар на двух узких участках фронта восточнее и западнее озера Веленце, прорвать оборону противника и, развивая удар в глубину, во взаимодействии со 2-м Украинским фронтом окружить и уничтожить будапештскую группировку врага. Для этого 46-я армия ударом на северо-восток должна была создать внутренний фронт окружения, соединившись с войсками 2-го Украинского фронта в районе Эстергома. 4-я гвардейская армия наступала основными силами на северо-запад и запад, создавая внешний фронт окружения, и одновременно одним корпусом — на север. 18-й танковый корпус предполагалось ввести в сражение в полосе 4-й гвардейской или 46-й армий, а 5-й кавалерийский корпус — вслед за 18-м танковым корпусом.
Командующий 2-м Украинским фронтом принял решение силами 53-й, 7-й гвардейской и 6-й гвардейской танковой армий прорвать оборону противника в излучине Дуная северо-западнее Будапешта, выйти на рубеж Немце, Несмей и во взаимодействии с 3-м Украинским фронтом окружить и уничтожить будапештскую группировку. Наши войска превосходили противника в живой силе и в боевой технике.
Преимущество было на нашей стороне, особенно в людях, числе дивизий и боевых самолетов. Но враг находился в обороне на заранее подготовленных позициях. 20 декабря фронты перешли в наступление. Преодолевая сопротивление гитлеровцев и отражая многочисленные их контратаки, войска 2-го и 3-го Украинских фронтов 26 декабря соединились в районе Эстергома. Будапештская группировка немцев численностью в 188 000 солдат и офицеров оказалась в кольце.
46-я армия во взаимодействии со 2-м гвардейским механизированным корпусом ворвалась в Буду и повела уличные бои, где каждый дом приходилось брать штурмом. 4-я гвардейская армия с 4-м механизированным корпусом вела бои западнее и южнее Эстергома до озера Балатон. 57-я армия и 1-я Болгарская армия заняли оборону южнее Балатона до реки Дравы и далее на территории Югославии до Торенц.
Медицинская служба 3-го Украинского фронта и его армий на 1 января 1945 года располагала 140 госпиталями, из них 65 в армиях, с сетью в 64400 коек, в том числе в армиях 22400.