Между тем 14 января Черняховский и Рокоссовский обрушились на Восточную Пруссию. Черняховский повел наступление с юга от реки Мемель, пересек замерзшие болота и двинулся на Тильзит и Инстербург. Его войска 19 января вступили в Тильзит и оттуда обошли с севера оборонительные позиции Инстербургского прохода. Рокоссовский форсировал Вислу севернее и южнее Пултуска и повел наступление на Остероде и Дойтш—Эйлау. 20 января Рокоссовский захватил Нейденберг. Пройдя поля Танненбергской битвы 1914 г., его левый фланг в окрестностях Плоцка соединился с правым флангом Жукова. 22 января были заняты Остероде, Дойтш—Эйлау и Алленштайн. 26 января русские заняли Мариенбург и достигли побережья Балтийского моря у Толькемита, севернее Эльбинга. Таким образом, Восточная Пруссия была отрезана от Померании. Связь между ними оставалась только по морю. Тем временем Черняховский преодолевал мазурские укрепления.
После захвата русскими восточной половины Западной Польши единственным более или менее значительным препятствием, оставшимся между ними и Берлином, была река Одер. Она представляла собой сильный естественный оборонительный рубеж, еще более усиленный цепью старых и современных крепостей, самыми важными из которых были Кюстрин, Глогау, Бреслау, Оппельн и Ратибор. Между Торном и Бреслау никаких естественных препятствий нет, но если бы они и были, все равно немцы уже не располагали силами, чтобы их удержать.
20 января войска фронта Конева пересекли севернее и южнее Бреслау германскую границу и через четыре дня взяли Оппельн. Русские окружали промышленные города Верхней Силезии, заходя с юга и с запада, и брали их один за другим. Одновременно они создали на Одере плацдармы у Оппельна и в окрестностях Брига и Штейнау. 4 февраля Конев полностью окружил Бреслау и перешел через Одер у Штейнау, Брига и Оппельна, а к 15 января подошел уже к Бунцлау, оказавшись в 60 милях западнее Бреслау и в 70 милях восточнее Дрездена. Здесь наступательный порыв его войск иссяк.
Пробиваясь на запад от Быдгоща, Жуков окружил Познань. Для обороны этого города немцы оставили сильный гарнизон и отошли к Шверину на Варте, а оттуда на Франкфурт на Одере и на Кюстрин. 2 февраля немцы потеряли Зольдин, и в этот же день Жуков занял Бервальде. К 10 февраля наступающий центр Жукова остановился. Пройдя поле Куннерсдорфского сражения 1759 г., он вышел напротив Лебуса к Одеру. В его тылу все еще держались крепости Шнайдемюль, Дойче—Кроне, Познань и Ансвальде, которые служили помехой его коммуникации.
Правый фланг Жукова продвинулся от Зольдина (25 миль севернее Кюстрина) к Торну, который пал 9 февраля. На север от него в Померании все увеличивалось количество немецких частей, прибывавших морем из Восточной Пруссии. Эти силы угрожали коммуникациям Жукова. Поэтому Жуков решил прежде всего взять вышеупомянутые крепости и затем отрезать находившиеся в Восточной Померании немецкие войска от войск, стоявших в ее западной части. 11 февраля он взял Дойче—Кроне, а три дня спустя — Шнайдемюль; вслед за этим 22 февраля он захватил Ансвальде и, наконец, на следующий день взял Познань. После этого Жуков начал наступление на участке между Вангерином и Фалькенбергом в направлении Балтийского моря и 9 марта достиг побережья близ Кольберга. Однако Кольберг держался до 19 марта.
Пока велась осада Кольберга, Рокоссовский продвинулся к Гдыне; по этой причине немцы приступили к эвакуации Данцига по морю. 23 марта Рокоссовский достиг города Сопот, расположенного немного южнее Гдыни. Это дало Рокоссовскому возможность атаковать Данциг с севера в его наиболее уязвимый фланг. 30 марта город был взят штурмом. Таким образом, операции на Балтике для Рокоссовского были закончены. Теперь он стал свободным и мог оказать помощь правому крылу Жукова на Нижнем Одере.
Между тем в начале марта Жуков проложил себе путь в Кюстрин. 12 марта он занял всю старую крепость за исключением некоторых островных фортов, которые держались до 30 марта. Это позволило Жукову перебросить через Одер два моста: один севернее, а другой южнее города. В то время как велись эти операции, немцы отчаянно боролись в Восточной Пруссии, где у них еще было около 20 ослабленных дивизий. Они обороняли Кенигсберг с фанатическим упорством. Город не был полностью окружен, так как у него оставались открытыми морские пути через Пилау. Черняховский, продвинувшись на запад, 1 февраля занял Фридланд, а через восемь дней — Прейсиш—Эйлау. 17 февраля он был смертельно ранен. Его заменил маршал Василевский, который вначале марта окружил Кенигсберг, но окончательный штурм города предпринял только 8 апреля. На следующий день город капитулировал.