A finales de 1944, tras la victoria obtenida en Debrecen y el golpe de mano alemán para secuestrar al gobierno del almirante Horthy, Hungría aun continuaba la lucha al lado de Alemania. Para sacar a los húngaros de la contienda, la STAVKA fijó como objetivo prioritario para las tropas del 2º y 3º Frente Ucraniano de Tobulkiny Malinovsky la toma de Budapest, operación que comenzó el 29 de octubre de 1944.
La maniobra de cerco en torno a la capital húngara, mas complicada de lo previsto por la fuerte resistencia opuesta por los defensores, no concluyó hasta el 26 de diciembre, cuando tropas sovieticas cortaron la carretera de Budapest a Viena al oeste de la capital hungara, cercando la ciudad, cuya defensa habia quedado encomendada al IX Cuerpo alemán de SS formado por las divisiones SS Maria Teresa y Florian Geyer, ademas de los remanentes de dos divisiones panzer y varias divisiones húngaras.
Tras una oferta de rendición que no fue atendida, la ofensiva sovietica comenzó el 29 de Diciembre, con un ataque contra la cara este del perímetro, es decir, contra los suburbios de Pest. El peso abrumador de esta ofensiva obligó a retroceder a los defensores a posiciones más defendibles hacia el interior de la ciudad. Mientras tanto, los rusos también atacaron el sector de Buda (oeste del Danubio), si bien hicieron pocos progresos.
En respuesta a la ofesiva rusa, el 1 Enero de 1945, la Wehrmacht lanzó la Operación Konrad, una ofensiva trifásica a cargo del IV Cuerpo Panzer SS, que partiendo desde el terreno elevado situado al norte de Budapest, tenia como objetivo levantar el sitio en torno a la ciudad atacando desde el norte, oeste y sur. El ataque, encabezado por las divisiones panzer SS Viking y Totenkopf abrió una brecha y ganó algun terreno, perimitiendo a las fuerzas de relevo avanzar si bien lentamente, hacia Budapest. De este modo, el 11 de enero, los alemanes tomaron el aeropuerto de Budapest, a apenas 20 kilómetros del centro de la ciudad. Pero en ese momento, ante el endurecimiento de la resistencia rusa, Hitler decidió intentar proseguir el avance en dirección mas al sur, de modo que el IV cuerpo panzer SS fue desviado del avance directo sobre la ciudad, sellando el destino de su guarnición.
Mientras tanto, la guerra urbana en Budapest se volvia terriblemente fiera. Los alemanes defendieron los distritos de la ciudad casa por casa, pero el sector de Pest, poco defendible por la ausencia de grandes obstáculos naturales o arquitectónicos, hubo de ser abandonado el 17 de Enero, retirándose los defensores a Buda, cuyas colinas ofrecían mejores opciones defensivas, no sin antes destruir todos los puentes sobre el Danubio (pese a las protestas de los oficiales húngaros, quienes adujeron que al estar el rio congelado, era inútil volar los puentes). Los combates por Buda alcanzaron a partir de ese momento una intensidad casi sin precedentes. Atrincherados en las alturas, desde las que dominaban el terreno, los alemanes del sector de Buda hacían pagar un alto precio por cada metro de terreno a los soviéticos, quienes vieron rechazados sus ataques una y otra vez. Aplicando tácticas de guerrilla urbana, y bien parapetadas, las tropas defensoras gozaron de algunas las ventajas que habían hecho de Stalingrado una trampa mortal para los alemanes en 1942. También la presencia de fuerzas blindadas pesadas de la SS (incluyendo carros Tiger y Tiger II) añadió potencia de fuego a los defensores.
En cualquier caso, la resistencia de Buda, rodeada por fuerzas muy superiores en número y sometida a constantes bombardeos, no podía durar mucho mas. El 6 de febrero 1945 la posición de la Colina de Gellert, un enclave táctico de vital importancia, cayó en manos sovieticas, de modo que los rusos pudieron emplazar su artilleria de forma mas favorable para machacar las posiciones de los defensores, que quedaron confinados en un perimetro de menos de dos kilómetros cuadrados.
Pese a ello, las tropas SS supervivientes aun ofrecieron una tenaz resistencia. La colina del castillo de Buda, ultimo reducto alemán, fue asaltado duramente, pero solo tras tres dias de sangrientos combates, el 10 de Febrero, pudieron los sovieticos capturar parcialmente la posición. El comandante alemán, Von Wildenbruch, decidió que era preciso intentar huir del oeste, y ordenó a sus hombres formar tres columnas. La primera, aprovechando la niebla y el factor sorpresa, pudo escabullirse, y se calcula que unos 5.000 hombres pudieron huir a través de los bosques y escapar hacia Viena, pero las dos columnas posteriores fueron aniquiladas por el fuego sovietico.
El 13 de Febrero cesó por completo la resistencia en Buda. Tras dos meses y medio de lucha, dos divisiones SS alemanas y una hungara, habían quedado destruidas, junto con varias divisiones regulares del ejército húngaro. El avance ruso por el frente meridional se ralentizó por un tiempo, pero el desgaste sufrido por las divisiones SS en los combates por Budapest agotó casi por completo el poder combativo de estas unidades para el resto de la guerra. Después de Budapest, el camino hacia Viena quedaba abierto para el Ejército Rojo.