Latem 1944 r. Niemcy, świadomi nawały nadciągającej ze wschodu, rozpoczęli budowę kilku linii umocnień ziemnych, które miały powstrzymać radziecką ofensywę. Mieszkańcy Wielkopolski byli wtedy przymusowo angażowani do prac „na einsatzu” („na okopach”).
W połowie stycznia 1945 r. znad Wisły ruszyła ofensywa Armii Czerwonej i Wojska Polskiego; jednostki 1. Frontu Ukraińskiego i 1. Frontu Białoruskiego szybko zaczęły zbliżać się ku Wielkopolsce.
Po zajęciu 19 stycznia Łodzi rozpoczęła się szybka ewakuacja ludności niemieckiej z regionu. Zajmowanie Wielkopolski przez Armię Czerwoną nie odbywało się bez przeszkód. Niektóre miasta przechodziły z rąk do rąk, np. Kobylin; silny opór stawili Niemcy m.in. w Kuklinowie i Dzierżanowie (powiat krotoszyński) oraz Zaborowie (powiat leszczyński).
W 2 połowie stycznia 1945 r. Poznań został ogłoszony twierdzą, której komendantem został gen. Ernst Mattern (7 lutego zastąpiony przez gen. Ernsta Gonella). Ze zbieraniny różnych oddziałów i często przypadkowych żołnierzy w krótkim czasie utworzono w miarę sprawnie działający, kilkunastotysięczny garnizon. W rezultacie, gdy pod Poznań w styczniu 1945 r. podeszły jednostki 1. Frontu Białoruskiego, zaskoczenie dowództwa radzieckiego było całkowite. Zapowiadały się długotrwałe walki uliczne. Polscy mieszkańcy nie usłuchali wezwania do opuszczenia miasta i w trakcie walk przebywali w piwnicach i schronach.
Dla Rosjan Kraj Warty był obszarem Rzeszy, dlatego nie było taryfy ulgowej w traktowaniu zarówno ludzi, jak i dóbr materialnych. Na zabytkowe śródmieście Poznania spadły bomby i pociski, które większą część tego obszaru zamieniły w stertę gruzów. Gdy nie powiodła się próba zajęcia Poznania z marszu, doszło do ciężkich walk w okolicach Starego Rynku i w śródmieściu. Bój o miasto toczył się do 16 lutego, a później przez tydzień trwały walki o Cytadelę, ostatni punkt oporu Niemców. XIX-wieczne umocnienia stawiały skuteczny opór kolejnym szturmom. Wreszcie do żołnierzy radzieckich dołączono ok. 2000 mieszkańców Poznania, w większości przymusowo zmobilizowanych do oddziałów pomocniczych. Kulminacja walk nastąpiła w nocy z 22 na 23 lutego.
W ich końcowej fazie gen. Gonell popełnił samobójstwo, a resztki niemieckiej załogi, zepchnięte w okolice obecnego amfiteatru, wywiesiły nad ranem białą flagę. Zgodnie z tradycją Armii Czerwonej, przywiązanej do honorowania ważnych dni, poznańska Cytadela została zdobyta 23 lutego – w rocznicę powstania sił zbrojnych ZSRR. W związku z tym obelisk postawiony pośrodku cmentarza żołnierzy radzieckich ma wysokość 23 m.
W trakcie walk o Poznań w styczniu i lutym 1945 r. poległo ponad 10 tys. żołnierzy Armii Czerwonej (w tym prawie 6000 w czasie boju o Cytadelę), a także ok. 600 cywilnych mieszkańców Poznania, wśród nich prawie 200 cytadelowców. Niemców zginęło ok. 5000-6000. Wielkie straty nastąpiły w zabudowie miasta – wyniosły ok. 55%, z tego 80-90% na Starym Mieście.
Marsz Armii Czerwonej na zachód, powstrzymany na krótko obroną Poznania, trwał aż do chwili zatrzymania ofensywy na Odrze. Natomiast opór Wehrmachtu wyraźnie rósł w miarę zbliżania się Rosjan do Wału Pomorskiego. Szczególnie ciężki bój stoczono o Piłę, gdzie opór stawił miejscowy garnizon wzmocniony jednostkami niemieckimi, które wycofały się z Wielkopolski w miarę postępu ofensywy ze wschodu.