Группа армий, по оценкам советской разведки, значительно завышенным, имела 580 тыс. солдат и офицеров, более 8 тыс. орудий и минометов, 515 боевых самолетов.
Продвижение советских войск в Восточной Пруссии было затруднено из-за наличия там мощных долговременных укреплений, созданных еще в меж военный период.
Первоначально 2-й Белорусский фронт главными силами должен был действовать в Померании.
Однако 20 января, из-за медленного продвижения 3-го Белорусского фронта, Ставка приказала повернуть 3-ю, 48-ю, 2-ю ударную и 3-ю гвардейскую танковую армии для действий против восточно-прусской группировки.
Командующий фронтом маршал Рокоссовский в мемуарах критиковал это решение, поскольку оно уводило четыре армии с главного, берлинского, направления на второстепенное, восточно-прусское.
Вероятно, поворот основных сил 2-го Белорусского фронта против Восточной Пруссии объяснялся тем, что Сталин стремился аннексировать эту провинцию и хотел занять ее до окончания войны, чтобы поставить союзников перед свершившимся фактом.
26 января танкисты 5-й гвардейской танковой армии генерала Вольского достигли Балтийского моря севернее Эльбинга.
Затем в район Мариенбурга и Эльбинга вышли войска 48-й армии и 2-й ударной армии.
В ночь на 27 января три немецкие пехотные дивизии нанесли неожиданный контрудар и потеснили 48-ю армию на 10–20 км, разбив две советские стрелковые дивизии.
К 30 января немцы оказались в 10 км от Эльбинга.
Создалась угроза восстановления сухопутной связи Восточной Пруссии с остальной территорией Германии.
Черняховский срочно перебросил в район прорыва стрелковый, механизированный и два танковых корпуса, кавалерийский корпус, пять истребительно-противотанковых артиллерийских бригад, стрелковую дивизию и другие части.
29 января немецкие войска в Восточной Пруссии оказались расчленены на хейльсбергскую, кёнигсбергскую и земландскую группировки.
Но уже 30 января танковая дивизия «Великая Германия» и моторизованная дивизия «Герман Геринг» оттеснили 11-ю гвардейскуюй армию от побережья и восстановили связь с Кёнигсбергом.
31 января советские войска овладели Хейльсбергом, но дальнейшее наступление пришлось прекратить из-за ожесточенного сопротивления противника.
10 февраля советские войска начали наступление против хейльсбергской и земландской группировок. 18 февраля погиб генерал Черняховский, и его во главе 3-го Белорусского фронта сменил маршал Василевский. 19–20 февраля немцы нанесли контрудар, овладели позицией Метгетен и восстановили связь Кёнигсберга с земландской группировкой.
К 29 марта была уничтожена группировка, оборонявшая Хейльсбергский укрепрайон. Ее остатки смогли пробиться в Кёнигсберг.
30 января Кёнигсберг был окружен силами 39-й и 11-й гвардейской армий. Но 19
20 февраля немцам ударом с северо-запада удалось деблокировать город, прорвавшись через позиции 39-й армии. Теперь появилась возможность снабжать столицу Восточной Пруссии через порт Пиллау.
Штурм Кёнигсберга начался 6 апреля.
Его осуществляли 43-я, 50-я и 11-я гвардейская армии под общим руководством генерала Баграмяна. Они насчитывали 137 тыс. человек, 5 тыс. орудий и минометов, 538 танков и самоходных орудий, 2444 самолета.
В Кёнигсберге у немцев было три кольца обороны.
Как вспоминал комендант Кёнигсберга Отто фон Ляш, «кирпич, применявшийся для строительства, несколько раз обжигался, чем достигалась повышенная прочность.
Таким образом, эти старые укрепления были довольно надежной защитой, в том числе и от современной артиллерии.
Однако их недостаток заключался в том, что возможность наблюдать оттуда и вести огонь была очень ограничена».
Две наиболее боеспособные дивизии кёнигсбергского гарнизона, пехотная и танковая, равно как и значительная часть артиллерийских запасов, задолго до штурма были выведены на Земландский полуостров.
По оценке коменданта Кёнигсберга генерала Отто, фон Ляша, к началу штурма на 150 тыс. наступающих приходилось 35 тыс. обороняющихся, в дополнение к которым имелось еще около 15 тыс. членов фольскштурма, не имевших оружия.
Из бронетехники гарнизон располагал только одной ротой штурмовых орудий.