Noha az 1944 szeptemberére már a Kárpát-medencében harcoló Vörös Hadsereg hadvezetése mindenekelőtt Berlin irányában tört előre, a 2., 3. és 4. Ukrán Front felvonulásával Budapest gyors elfoglalását is megkísérelték. Sztálin 1944. október 28-án utasította Malinovszkij marsallt, hogy november 3-ig vegye birtokba a várost. Az akcióhoz igyekeztek megerősíteni a 2. Ukrán Frontnak az alföldi páncéloscsatában súlyos veszteségeket szenvedett alakulatait. Ezzel egyidejűleg a német Dél Hadseregcsoport parancsnoka, Friessner vezérezredes a magyar 3. hadsereg mögé, Kecskemét körzetébe irányította a 24. páncéloshadosztályt, míg a német 6. hadsereg a Tisza jobb partját védte Tiszafüred és Szolnok térségében.
1944. október 29-én megkezdődött a szovjet 46. hadsereg támadása, vagyis a 108 napig tartó budapesti csata. A szovjet csapatokkal szemben a Heszlényi József vezérezredes vezette magyar 3. hadsereg 10. gyalog-, és 23. tartalékhadosztálya, 20. gyaloghadosztálya, illetve a 8. és 5. tábori póthadosztály alakított védelmi vonalat. A szovjet gépesített-hadtest másnap elérte Kecskemét előterét, majd folytatták előrenyomulásukat Lajosmizse és Nagykőrös felé. Másfél nap alatt a Duna–Tisza közén támadó szovjet csapatok 95 km szélességben törték át a magyar 3. hadsereg védelmét, ám a tervezettnél sokkal szerényebb mértékben, 18–25 km mélyen tudtak előrenyomulni. Jelzésértékű, hogy a solti hídfőt a magyar–német védők a túlerő ellenére is egészen november 13-ig tudták tartani.
Miután az alföldi páncéloscsata befejeződött, az ott bevetett német páncélos-alakulatokat október 30-tól átcsoportosították Budapest előterébe. A 13. páncéloshadosztály, az 1. páncéloshadosztály, a 23. páncéloshadosztály, a 8. SS-lovas-, a 46. gyalog- és a 153. tábori kiképzőhadosztály, majd a 8. SS- és 22. SS-lovashadosztályok és a Feldherrnhalle páncélgránátos-hadosztály áthelyezése jelentős mértékben megerősítette a Pest körüli Attila-vonal külső védőövét. Erre szükség is volt, mivel 1944. november 3-án a szovjet csapatok Soroksártól keletre hat kilométerre megközelítették Budapestet. A főváros közvetlen előterében elkeseredett, váltakozó sikerű harc dúlt. Mivel azonban a szovjetek nem tudtak áttörést kicsikarni, november 4-én leállították a 46. hadsereg támadását és egy jóval szélesebb arcvonalra tervezett támadást dolgoztak ki.
A 2. Ukrán Front újabb kísérlete november 11-én Cegléd térségéből indult. A támadók november 15-én Jászberényt, november 18-án pedig Gyöngyöst foglalták el. A szívósan védekező német–magyar csapatok miatt azonban nem sikerült a fővárosig jutni. Malinovszkij marsall november 25-én engedélyt kért a támadás ideiglenes leállítására. Másnap – számos módosítással – jóváhagyták a 2. Ukrán Front parancsnokának Budapest kétoldalú átkarolását célzó tervét. A szovjetek december első tíz napjában el is foglalták Miskolcot, Balassagyarmatot és Vácot, Budapest közvetlen előterében pedig három-négy km mély hídfőt alakítottak ki a Duna nyugati partján. Itt azonban ismét megrekedtek, így a szovjet hadvezetés elrendelte, hogy a 2. és 3. Ukrán Front csapatai közösen, északról és délről egyidejűleg mért csapásokkal kerítsék be és foglalják el a várost.
Délen a Bajánál átkelt szovjet seregtestek már december elsején Paksnál jártak, miközben harckocsi-ékeik Dombóvár és Kaposvár térségét is elérték. A Duna keleti partján december 4-e éjjel kezdődött a 46. hadsereg óriási véráldozatokat követelő átkelése Ercsinél. Az átkelés sikeres volt, ám a Margit-vonalon megállt a front. 1944. december 20-án a 2. és 3. Ukrán Front csapatai megindították közös, Budapest bekerítésére irányuló hadműveletüket. Északon kezdetét vette az első garami páncélosütközet, míg keleten Székesfehérvár körül alakult ki súlyos harcokkal járó páncélosütközet. Az elszántan védekező német–magyar csapatok kissé ugyan lelassították a két szovjet front hadműveletét, ám december 22-én sikerült áttörni a Margit-állás második védőövét, míg a pesti oldalon az Attila-vonal védőöveibe ékelődtek be. December 26-án a 3. Ukrán Front 18. harckocsihadtestének erői elfoglalták Esztergomot, a 2. Ukrán Front 7. gárdahadserege pedig birtokba vette Párkányt. Budapest teljes bekerítése ezzel befejeződött.