Перед советским военным командованием стояло несколько задач. Во-первых, необходимо было сдержать натиск немцев, которые пробивались на выручку к своей группировке, окруженной в столице Венгрии. Во-вторых, планом было предусмотрено начать наступление в Чехословакии. В-третьих, нужно было выступить на берлинско-варшавском и восточно-прусском направлениях. В-четвертых, выполнение всех перечисленных задач предполагалось начать одновременно – 12 января 1945 г.
Следует отметить, что немцы хорошо подготовили оборону на висло-одерском направлении. Города, стоявшие на Висле и Одере, а также на их притоках, они превратили в опорные пункты обороны. Всего было 7 таких рубежей. Их них особенно хорошо были укреплены вислинский рубеж, Померанский вал и Мезеритцкий район (довоенная польско-германская граница). Крепости, построенные на Одере еще в Средние века, были усовершенствованы, переоснащены и представляли собой мощные оборонительные пункты. Оборону перечисленных пунктов держали 3 немецкие армии, в составе которых было 30 дивизий. Еще 8 дивизий составляли резерв.
Немецкое руководство развернуло широкую пропаганду неуязвимости оборонительных рубежей на Висле. В войсках, занявших оборону, насаждались беспрекословное повиновение и ярый фанатизм. Благодаря пропаганде, а также жестоким наказаниям за малейшее нарушение дисциплины солдаты и офицеры вермахта готовы были защищать вверенные им объекты до конца.
Верховное немецкое командование планировало обеспечить на всех оградительных рубежах затяжную оборону, вследствие которой Советская армия должна была, по их расчетам, понести крупные потери. Другой вариант заключался в переходе с одного оборонительного пункта на другой. Цель была одна – как можно сильнее изнурить советские войска, которые шли в наступление, и тем самым отодвинуть окончание войны.
Висло-Одерская операция, в которой приняли участие 1-й Белорусский и 1-й Украинский фронты, началась 13 января 1945 г. Общая численность советских войск составляла 2,2 млн человек против 500 000 у немцев. Танковой техники было 7000 единиц (у немцев – 1220). Войска Украинского и Белорусского фронтов прорвали оборону гитлеровцев на участке фронта длиной 480 км.
Вечером 17 января 1945 г. оборона противника была нарушена еще больше – полоса прорыва достигла 500 км, а его глубина составляла 160 км. В это же время начались бои за освобождение Варшавы. Немногим более половины дня потребовалось 1-й армии войска Польского (под командованием генерала С. Г. Поплавского) и войскам 61-й и 47-й армий 1 – го Белорусского фронта, чтобы освободить город.
Наступление развивалось стремительными темпами. Так, 18 января 1945 г. войсками маршала Г. К. Жукова была ликвидирована немецкая группировка, находящаяся западнее Варшавы. На другой день город Лодзь был полностью очищен от немецких войск. И тогда же, 19 января, стал свободным от фашистов Краков, а также пересечена германо-польская граница. Теперь на очереди было освобождение Верхней Силезии. Для того чтобы этот промышленный район не подвергать большим разрушениям, которые были бы неминуемы в ходе боев, Ставкой было принято решение разомкнуть кольцо окружения и разбить вышедшую из него немецкую группировку, преследуя ее на западе. План был претворен в жизнь, и, кроме того, разгром группировки с юга завершили войска 4-го Украинского фронта. Полностью Силезский район был освобожден от немцев 29 января 1945 г.
Следует отметить что стремительность наступления советских войск способствовала тому, что воинские части и соединения противника подчас не успевали отойти на новые рубежи, не говоря уже об их обороне. В Восточной Пруссии наступление 2-го и 3-го Белорусских фронтов проводилось синхронно, а это, в свою очередь, явилось важной предпосылкой победного шествия 1-го Белорусского и 1-го Украинского фронтов.