Вскоре в состав 3-й ударной армии прибыла участвовавшая в «Марсе» 150-я стрелковая дивизия. С ее помощью вытянувшаяся к Великим Лукам «кишка» была ликвидирована и линия фронта на этом направлении стабилизировалась.
Борьба за город Великие Луки.
С момента замыкания кольца окружения советское командование готовило наступление с целью расчленить и уничтожить по частям группировку немецких войск в районе Великих Лук. Для борьбы в городе формировались специальные штурмовые отряды из пехотинцев, саперов и огнеметчиков. Каждый из отрядов усиливался орудиями сопровождения и танками. Кроме того, каждый батальон должен был подготовить по одному усиленному взводу, предназначенному согласно директиве М.А.Пуркаева исключительно для ночных действий. Наиболее серьезно к делу подошли в 257-й стрелковой дивизии полковника А.А.Дьяконова. По итогам операции А.А.Дьяконов получит генерал-майора, позднее он командовал корпусом. В его дивизии было создано пять штурмовых отрядов численностью до 100 человек. Каждый отряд делился на пять групп: разведки, штурмовую, обеспечения, закрепления и резерва. В каждый отряд входили саперы, пулеметчики, минометчики, химики (для постановки дымовых завес), артиллеристы и ампулометчики (ампулометы для капсул с зажигательным веществом). Тренировки дивизии происходили на модели немецких укреплений Великих Лук, построенных из снега. Многочисленные «Вердены» 1942 г. привели Красную Армию к созданию штурмовых групп, к которым немцы пришли по опыту Вердена без кавычек. Хуже подготовились к боям в городе 357-я и особенно 7-я эстонская стрелковая дивизии. Вместо формирования штурмовых групп предполагалось штурмовать город просто усиленными батальонами.
12 декабря из-за сплошного тумана штурм не состоялся и был перенесен на следующий день. 13 декабря снова был туман, но рвущаяся с юго-запада 291-я пехотная дивизия заставила начать штурм в условиях плохой видимости. Авиационной поддержки из-за тумана не было ни у одной из сторон. С запада Великие Луки штурмовали 357-я и 257-я стрелковые дивизии, с востока — 7-я эстонская стрелковая дивизия. Наступление началось в 10.00 залпом РС, за которым последовала артиллерийская подготовка. Так же как в первый день «Марса», из-за плохой видимости огонь артиллерии был неэффективным. Под огнем неподавленных пулеметов пехота залегла. Только штурмовые группы 257-й стрелковой дивизии уверенно продвигались вперед и форсировали пересекавшую город реку Ловать. За штурмовыми группами шли пехотинцы, очищая кварталы от оставшихся узлов сопротивления противника.
В 14.00 15 декабря к командующему гарнизоном Великих Лук были направлены советские парламентеры с предложением сдаться. Однако фон Засс отказался принимать пакет с ультиматумом, сославшись на приказ фюрера. После возвращения парламентеров боевые действия продолжились с прежним ожесточением.
Из-за неравномерной подготовки к штурму задача взять город к 16 декабря не была выполнена. 16 декабря К.Н.Галицкий решил ввести в бой 249-ю стрелковую дивизию эстонского корпуса. 257-й стрелковой дивизии поручалось овладеть опорными пунктами на окраине Великих Лук, нависавшими над флангом наступления. Также 16 декабря гарнизону Великих Лук была передана радиограмма Гитлера:
«Командиру боевой группы Великие Луки. Я выражаю свое восхищение вам и вашим солдатам за вашу храбрость. Я убежден, что вы будете держаться как сталь подобно генералу Шереру в Холме, до тех пор пока вас не освободят».
Очередной этап наступления начался 18 декабря. Лучше других, как и в предыдущие дни, действовала 257-й стрелковая дивизия. Эстонские соединения почти не продвигались. По утверждению немцев, из эстонских дивизий на их сторону шел поток перебежчиков. Командующий 3-й ударной армией решил ввести в бой за Великие Луки 47-ю механизированную бригаду 2-го механизированного корпуса. Ударом 257-й стрелковой дивизии с севера и 47-й механизированной бригады с юга предполагалось разорвать группировку противника пополам.
25 декабря танкисты и пехотинцы начали наступление навстречу друг другу. К 30 декабря 257-я стрелковая дивизия овладела северной половиной центральной части города. Навстречу ей при поддержке 13-го танкового полка огнеметных танков наступала 47-я механизированная бригада. В 20.20 26 декабря комендант гарнизона Великих Лук докладывал генералу Шереру:
«У нас больше не осталось противотанковых пушек, которыми мы могли бы противостоять русским тяжелым танкам. Мы срочно просим доставить планерами три 75-мм противотанковых орудия с боекомплектом и расчетами».
В ночь с 28 на 29 декабря гарнизону Великих Лук было сброшено на парашютах восемью бомбардировщиками Хейнкель-111 и доставлено пятью планерами 13,8 тонны боеприпасов и медикаментов, две противотанковые пушки с расчетами. К вечеру 30 декабря наступавшие с севера и юга подразделения советских войск разделяли только четыре квартала. 31 декабря разгорелись самые жестокие уличные бои. Командовавший гарнизоном Великих Лук подполковник фон Засс понимал, что потеря связи с западной группировкой снижает шансы на успешное деблокирование. К 1 января большая часть города была в руках советских войск. Соединившиеся 257-я стрелковая дивизия и 47-я механизированная бригада захватили всю центральную часть города, разъединив гарнизон на две части — одна в районе железнодорожного вокзала, а вторая — в районе старой крепости.
Понимая низкую эффективность «национальных» дивизий, советское командование продолжило штурм города силами проверенных в бою соединений — 47-й механизированной бригады и 257-й стрелковой дивизии. Бригада 6 января захватила вокзал, который был ядром обороны восточной части города. После этого бригаду вывели в оборону на западные окраины города, деблокирующая группировка пробилась уже слишком близко. Вскоре были ликвидированы остальные опорные пункты немцев — 13 января пала Курьяниха, 15 января — военный городок, а 16 января — железнодорожное депо и Алигардово. В последнем был взят в плен со своим штабом командир гарнизона «крепости Великие Луки» подполковник фон Засс. В 1946 г. фон Засс был осужден за военные преступления и публично повешен в Великих Луках.
Параллельно разгрому основных сил гарнизона в районе железнодорожного вокзала и депо проводился штурм цитадели. Старую крепость размером 250X100 метров обороняли на 31 декабря около 400 человек. Высокие обледенелые скаты валов крепости делали ее штурм невозможным для танков и трудным для пехоты. Для штурма были заготовлены специальные лестницы.
Несмотря на жестокий обстрел артиллерии и удары авиации полностью систему огня гарнизона подавить не удалось, и 15 января внутрь крепости прорвалась только одна штурмовая группа с северо-востока. Однако этот отряд отвлек на себя значительные силы обороняющихся, что позволило остальным штурмовым группам ворваться в цитадель с севера и юга. К 7.00 16 января крепость пала. В цитадели было захвачено 235 пленных, 9 танков (из числа прорвавшихся извне) и большое количество разнообразного оружия.