К январю 1945 года германская армия находилась в критическом положении. Шли тяжелые бои в Венгрии и Восточной Пруссии, постепенно Вермахт отступал и на Западном фронте. Красная Армия захватила Плоештинский нефтяной район. Бомбардировки Союзников нанесли серьёзный ущерб немецкой военной промышленности. Были практически уничтожены ВВС Германии и исчерпаны людские резервы. Несмотря на это, в декабре 1944 года немцы начали крупное наступление в Арденнах, которое стало последней попыткой изменить ход войны. Красная Армия заняла позиции за Вислой, успев на исходе летнего наступления захватить несколько плацдармов на её западном берегу, которые удерживала почти в течение полугода. Войска в ходе осени-зимы 1944-1945 годов наращивали силы, готовясь к наступлению. Готовились к обороне и немцы, выстроившие несколько линий обороны с севера на юг через всю Польшу.
Советское командование планировало мощное наступление четырёх фронтов, 1-го, 2-го и 3-го Белорусских и 1-го Украинского, с целью оттеснить немцев к Одеру. 6 января, по причине неудачного для Союзников развития событий в Арденнах, к Иосифу Сталину обратился Уинстон Черчилль с просьбой ускорения наступления на Восточном фронте. В результате, Сталин перенес срок наступления на несколько недель.
Советским войскам на территории Польши противостояла немецкая группа армий «А» в составе 30 дивизий, 2 бригад и 50 отдельных батальонов, общей численностью в 560 тысяч человек. На их вооружении находилось около 5 тысяч орудий и минометов, 1220 танков и штурмовых орудий, 630 боевых самолётов. Пытаясь остановить советское наступление, немецкое командование перебросило с Западного фронта 29 дивизий и 4 бригады. Противник подготовил между Вислой и Одером семь оборонительных рубежей, эшелонированных на 300-500 км. Наиболее сильно была укреплена первая полоса, особенно её участки, находившиеся на линии соприкосновения сторон в районах Магнушевского, Пулавского и Сандомирского плацдармов.
Силы 1-го Белорусского и 1-го Украинского фронтов имели в своем составе 134 дивизии, четыре танковые и две воздушные армии, пять отдельных танковых и один механизированный корпус, три кавалерийских корпуса, четыре артиллерийских корпуса прорыва, другие соединения и части различных родов войск. Они насчитывали более 2,2 миллионов человек, 36 тысяч орудий и минометов, 7 тысяч танков и САУ, 4,7 тысячи самолёта.
Карта-схема Висло-Одерской операции.
Войска 1-го Украинского фронта перешли в наступление рано утром 12 января, нанося главный удар с Сандомирского плацдарма, а войска 1-го Белорусского фронта — 14 января с Магнушевского и Пулавского плацдармов. Поскольку по приказу Гитлера танковые резервы были заранее выдвинуты к линии фронта, они оказались в пределах досягаемости огня советской артиллерии, понесли серьёзные потери уже в первый период наступления и не могли быть задействованы в соответствии с заранее разработанными планами обороны, втягиваясь в бой для прикрытия брешей, образовывающихся в боевых порядках немецких войск.
13 и 14 января севернее — в Восточной Пруссии — развернулось наступление 2-го и 3-го Белорусских фронтов. Лишь на четвертый день советского наступления Гитлер приказал начать переброску корпуса «Великая Германия» из Восточной Пруссии в район города Кельце, в 170 км к югу от Варшавы. Однако попытка немецкого командования остановить советское наступление танковым контрударом в районе Кельце провалилась. Тем временем, 47-я армия, действовавшая на крайнем правом фланге 1-го Белорусского фронта, обходила Варшаву с севера. 16 января немецкие войска в Варшаве потеряли связь с немецким верховным командование, а 17 января советскими войсками Варшава была освобождена.
К 18 января главные силы группы армий «А» были разгромлены, оборона противника прорвана на 500-км фронте на глубину 100-150 км. 19 января передовые части 3-й гвардейской танковой, 5-й гвардейской и 52-й армий 1-го Украинского фронта, преследуя противника, вступили на территорию Германии в Верхней Силезии, а войска левого крыла фронта освободили Краков.
Советские войска во время Висло-Одерского наступления.
Советские танки во время наступления на Одер.
Германское командование начало переброску в приграничные районы части сил из внутренних районов Германии, с Западного фронта и других участков фронта. Однако попытки восстановить прорванный фронт успеха не имели. 20-25 января армии 1-го Белорусского фронта преодолели вартовский и познанский оборонительные рубежи и окружили в Познани 60-тысячный гарнизон противника. 22 января — 3 февраля советские войска вышли на Одер и захватили плацдармы на его западном берегу в районах Штейнау, Бреслау, Оппельна и Кюстрина. В это же время войска 4-го Украинского фронта заняли часть Южной Польши и Северной Чехословакии и продвинулись до верховьев Вислы.
Красная Армия входит в Лодзь.
В результате проведенной операции было полностью разгромлено 35 дивизий противника, ещё 25 потеряли от 50 до 70 % личного состава. Немцы потеряли убитыми и раненными 479 тысяч человек. Было взято в плен около 150 тысяч человек. Советские потери составили 43 тысячи убитыми и 150 тысяч раненными.