Оборона города
Первоначально Козельск осадили только войска корпуса Батыя, двигавшиеся с севера от Торжка. Подойдя к городу, Батый предложил его защитникам некоторые условия мирного соглашения, или капитуляции, которые были ими отвергнуты[1][5][15]. Как повествует летописец, жители Козельска решили на совете:
яко аще князь нашь младъ есть, но положимъ животъ свой за нь; и сде славу сего света прiимше, и тамъ небесныя венца отъ Христа Бога прiимшемъ[16]
Персидский историк Рашид-ад-Дин, рассказывая о длительной осаде Козельска, отмечал, что корпус Батыя не смог взять город в течение двух месяцев. Похожий срок в семь недель называет и Ипатьевская летопись[16]. Взят город был только после подхода корпусов Кадана и Бури[17][5].
По предположению Каргалова, Козельск был назначен местом сбора войск, а Бури и Кадан привезли с собой осадные орудия, до этого город не штурмовался[18].
С помощью камнемётных машин монголы проломили стену и захватили вал, на котором она стояла. Завязалась рукопашная схватка («козляне ножи рѣзахуся с ними»). Штурм захлебнулся, воины Батыя отступили[19].
По предположению Селезнёва, стены Козельска можно было штурмовать лишь в ограниченном количестве мест, так как весенняя распутица сделала непроходимыми долины рек Жиздры и впадающей в неё у Козельска Другусны и заперла монгольское войско на водоразделе[19].
В сложившихся условиях защитники города приняли решение («свѣт же створиша») совершить вылазку («изиити на полкы Тотарьскые»). Атака русских оказалась полной неожиданностью для врага. Дружинникам и ополченцам удалось разрушить камнемётные машины («исѣкоша праща ихъ») и, «нападше на полъкы ихъ», уничтожить до 4000 воинов неприятеля. Эта отчаянная попытка спасти город стоила участникам вылазки жизни: никто не смог вернуться назад («и самѣ же избьени быша»)[19].
Новый штурм защитники Козельска отразить уже не могли: сил для сопротивления не осталось. Завоеватели не пощадили никого: «изби вси, и не пощади от отрочатъ до сосущих млеко». Малолетний князь Василий, согласно рассказу летописца, пропал без вести: «о князи Васильи невѣдомо есть, и инии глаголаху яко во крови утонулъ есть, понеже убо младъ есть»[20].
Хорошо укреплённые и куда более крупные русские города (Рязань или Владимир) пали значительно быстрее, они оборонялись лишь по пять дней. А небольшой Козельск продержался 49 дней. Столько же — около двух месяцев — оборонялся только огромный Киев[5][18].