С 29 октября 1944 года войска 2-го Украинского фронта начали Будапештскую наступательную операцию. Советским войскам удалось прорваться к внешнему оборонительному обводу Будапешта, но сам город немецко-венгерским войскам группы армий «Юг» удалось удержать. На подступы к Будапешту были переброшены значительные подкрепления с обеих сторон, сражение достигло небывалого накала и ожесточённости. Обе стороны меняли направление ударов, предпринимали контратаки и крупные контрнаступления, но очень скоро стало ясно, что имеющимися силами Будапештский оборонительный район не взять.
В связи с этим Ставкой Верховного Главнокомандования войскам 3-го Украинского фронта, закреплявшимся после завершения Белградской операции в северо-восточных районах Югославии, было приказано передать свои позиции войскам Народно-освободительной армии Югославии, передислоцироваться в южную Венгрию, занять полосу обороны по Дунаю от его слияния с Дравой до города Байя. Фронт должен был форсировать Дунай и развивать наступление по его правому берегу, имея задачей прорваться в промежуток между северной оконечностью озера Балатон и Будапештом, охватывая Будапешт с юго-запада, а также частью сил обойти озеро Балатон с юга. Операция получила название Апатин-Капошварской и должна была начаться 7 ноября.
Советское наступление.
3-й Украинский фронт к началу операции располагал только одной 57-й общевойсковой армией, сильно ослабленным 18-м танковым корпусом и 17-й воздушной армией, из которой также был выведен ряд частей. Поскольку для выполнения поставленных задач этих сил явно не хватало, фронту была передана 4-я гвардейская армия из резерва Ставки, но она находилась в южной Румынии и могла сосредоточиться в полосе фронта только к середине ноября. Общая численность войск фронта с учётом обеих армий составляла 205 370 человек. В данном районе занимала оборону 2-я венгерская армия, входившая в состав группы армий «Юг». В ходе операции этот район был передан в полосу обороны группы армий «F».
Несмотря на то, что обе армии находились ещё в пути к исходным районам наступления, приказ на начало операции отменён не был и 7 ноября 1944 года в наступление перешла одна 57-я армия силами одного 75-го стрелкового корпуса, причем и он ещё не успел полностью сосредоточиться. Остальные части армии находились на марше. В первый день советским войскам удалось с огромными усилиями захватить один небольшой плацдарм севернее города Апатин. В ночь на 9 ноября севернее хорватского села Батина был захвачен и второй плацдарм. Развернулись ожесточенные бои по расширению плацдармов и объединению их в единый плацдарм. В этих боях войскам фронта активно содействовала Дунайская военная флотилия. 13 ноября в сражение на батинском плацдарме был введён в бой ещё один стрелковый корпус 57-й армии. Но только к 23 ноября батинский и апатинский плацдармы были объединены. На единый плацдарм были введены третий стрелковый корпус из состава 57-й армии и 4-я гвардейская армия. К исходу 26 ноября плацдарм был расширен до 50 километров по фронту и 14-17 километров в глубину и был освобожден город Мохач. Наконец были созданы условия для прорыва обороны противника.
Переправа через Дунай.
27 ноября войска 3-го Украинского фронта начали решительное наступление и в первый же день прорвали оборону измотанных в сражении венгерских войск. Единая система обороны противника была разрушена, многие его части оказались изолированы друг от друга и начали беспорядочный отход. Темпы наступления составили теперь по 20 −30 километров в сутки. Войска 57-й армии 29 ноября освободили крупный город Печ, 2 декабря — город Капошвар и вышли к южной оконечности Балатона. Чтобы остановить там советское наступление, немецкое командование было вынуждено срочно ввести в бой свою 2-ю танковую армию. Пройдя свыше 100 километров, части 57-й армии вышли к оборонительному рубежу «Маргарита» между озером Балатон и рекой Дравой, где перешли к обороне. На южном берегу Дравы у города Барч советскими и югославскими войсками был образован крупный плацдарм, создавший серьёзную угрозу тылам немецкой группы армий «F». Ввиду неудачных действий командующего группы армий «F», 2-я танковая армия и вся полоса обороны немецких войск на этом направлении были вновь переданы в группу армий «Юг».
Батина после битвы.
Части 4-й гвардейской армии также успешно наступали на север. 30 ноября был освобождён город Сексард. Севернее его немецкое командование бросило в бой моторизованную дивизию, которая была быстро охвачена с флангов и вынуждена поспешно отступить. 1 декабря при содействии речного десанта Дунайской военной флотилии взят город Герьен, а 4 декабря, пройдя с боями за несколько дней свыше 130 километров, армия вышла на северную оконечность Балатона и в район между Балатоном и озером Веленце. 2-я венгерская армия ввиду больших потерь была расформирована, а против советской 4-й гвардейской армии была развернута оборонявшаяся по Дунаю 3-я венгерская армия, которая к началу декабря также оказалась разбитой. Только на спешно подготовленном оборонительном рубеже Балатон-Веленце немецким войскам удалось задержать советское наступление. Для этого командованию группы армий «Юг» пришлось перебросить в этот район из Будапешта 4 немецкие дивизии, в том числе танковые. Поскольку на обоих направлениях войска фронта вышли к мощным оборонительным рубежам противника, которые уже были заняты его войсками, для их прорыва требовались накопление сил, перегруппировка и пополнение боеприпасами. С 10 декабря войска фронта перешли к обороне. Операция была завершена.
По итогам операции были освобождены около 10 городов и свыше 500 мелких населенных пунктов, важные промышленные районы. Был занят важный исходный район для удара по окружению Будапешта. Советские войска потери составили 6790 человек безвозвратными и 25 460 человек санитарными.