U prvim danima oktobra 1944.godine partizanske jedinice grupisane u 1. armijska grupa NOVJ su se pripremale da zajedno sa Crvenom armijom oslobode Beograd. NOVJ je za oslobođenje Beograda prikupila tri korpusa sa oko 50.000 boraca dok je Crvena armija za ovu operaciju odredila 4.gardijski mehanizovani korpus iz sastava III Ukrajinskog fronta.
Partizanske trupe su u napad krenule 11.oktobra u pravcu Obrenovca. Jedinice 12.udarnog korpusa su tri dana vodile borbe na ovom pravcu kako bi se probile do Čukarice. Za to vreme 1.proleterski korpus je 12.oktobra oslobodio Mladenovac i Topolu, a zatim se povazao sa sovjetskim jedinicama.
Nemci su napredovanje partizana pokušali da zaustave kod Ralje a potom je planirano da se odbrana Beograda utvrdi na Avali. Pogibija generala Šnekenburgera komandant odbrane Beograda na Avali je predstavljala dodatni problem za nemačku komandu. Partizanske trupe su nadirale i ka Smederevu kako bi se nemačka borbena grupa Štetner odvojila od glavnine nacističkih snaga kod Beograda.
Partizanske jedinice su probile nemačku prvu liniju nemačke odbrane a 14.oktobra je počeo opšti napad na Beograd. Peta divizija NOVJ je napredovala Ulicom kralja Aleksandra i Ulicom kraljice Marije (27.mart); 1.proleterska je išla ka Narodnom muzeju iz pravca Banjice; 6.proleterska je nastupala Ulicom kralja Milana ka Kalemegdanu; dok su trupe 12.korpusa napredovale s Banovog brda ka Glavnoj železničkoj stanici.
Do večeri 15.oktobra trupe NOVJ i Crvene armije su zauzeli Topčider, Dedinje i Slaviju. Nemci su pružili najžilaviji otpor duž Nemanjine ulice gde se nalazio blok zgrada bivših ministarstava.
Uveče 15.oktobra je postalo jasno da postoji mogućnost da se trupe grupe Stettner izbiju iza leđa jedinicama koje oslobađaju Beograd. Komanda 1.armijske grupe NOVJ je izdala naređenje 21.diviziji da sprečio proboj nemačkih trupa u Beograd. Za ovaj zadatak je određena i 5.divizija. Nemci su do kraja dana uspeli da se probiju do Konjarnika ali nisu mogli da uđu u grad. Grupa Štetner je konačno uništena u noći između 18 i 19.oktobra dok se povlačila ka Obrenovcu.
Partizanske trupe su nastavile borbe i u gradu, ali su Nemci grčevito držali odbrambene položaje na Savi. No, bitka se rasplinula u niz lokalnih borbi gde su partizanske trupe i Crvena armija uništavale džepove nemačkog otpora.
Uz podršku tenkova i artiljerije Crvene armije, 1.proleterska divizija je 19.oktobra zauzela palatu Albanija, hotel Moskva i zgradu Uprave grada. 6.divizija je zauzela hotel Beograd.
Nemačka komanda je u noći između 19. i 20.oktobra donela odluku da se trupe povuku ka Zemunu. U zoru 20.oktobra partizani i crvenoarmejci zauzeli Glavnu železničku stanicu, a u toku dana je uništen i nemački mostobran na Čukarici. Oko 19 časova 20.oktobra Beograd je potpuno oslobođen od okupatorskih i kvislinških formacija. Borbe su u toku dana prenete na zemunsku obalu Save. Zemun je oslobođen u jutarnjim časovima 22.oktobra a Nemci su se povukli ka Rumi.
Nemača vojska je u borbama za Beograd izgubila više od 15.000 vojnika, a još 9.000 je zarobljeno. 1. armijska grupa NOVJ je imala oko 3.000 poginulih boraca, kao i 4.000 ranjenih. Crvena armija je izgubila 960 vojnika u borbama.