Тогда Полоцк располагался на правом (северном) берегу Западной Двины, и река Полота, протекающая с севера на юг, и впадающая в Двину в городской черте, делила город на две части. Полоцк был занят французами, основные силы которых базировались на левом (южном) берегу напротив города. Армия Витгенштейна, прикрывая направление на Петербург, стояла соответственно на правом берегу Двины.
Через некоторое время армия Витгенштейна существенно усилилась, так как 15 октября к ней подошло хорошо вооружённое Петербургское ополчение (12 тысяч), набранное в северных губерниях. Кроме того на соединение с Витгенштейном подходил из Финляндии корпус генерал-лейтенанта Штейнгеля (12 тысяч). Армия Витгенштейна приступила к наступательным операциям 18 октября, то есть в то время, когда Наполеон начал отступление из Москвы.
Витгенштейн, пытаясь обезопасить маршрут Штейнгеля, который шёл по левому берегу Двины, решил сделать ложное нападение на Полоцк, чтобы отвлечь противника от мостов, которые он собирался навести через реку для переправы корпуса Штейнгеля.
18 октября авангард генерал-майора Балка в составе двух егерских полков, нескольких эскадронов и 6 пушек вытеснил французов из села Громы, находившегося к востоку от города, и прогнал их до укреплённых позиций под Полоцком. Артобстрел и контратака французов опрокинули Балка, что вынудило Витгенштейна прислать подкрепления. Основные бои завязались на правом берегу Двины, французы перебрасывали части с левого берега, что устраняло помехи для корпуса Штейнгеля, приближающегося тем же берегом.
Тем временем французы начали выдвигаться для наступления. Отвлекающая диверсия превращалась в большое сражение. Витгенштейн был вынужден втянуть в дело весь корпус. Остаток дня прошёл в ожесточённых атаках и контратаках укреплений Полоцка. Основные силы Витгенштейна напирали на французов на левом (восточном) берегу реки Полоты, притока Двины. Одновременно с этим на правом берегу Полоты вёл бой авангард генерал-лейтенанта Яшвиля. В целом бой шёл без большого успеха для какой-либо из сторон, но в силу наступательного боя против укреплённой оборонительной позиции потери русских превосходили потери французов. Подошедший Штейнгель сообщил, что находится недалеко от места боя и может атаковать позиции неприятеля напротив Полоцка с левого берега Двины.
19 октября в течение дня противоборствующие стороны под Полоцком наблюдали друг за другом. В 4 часа дня войска Витгенштейна заметили французов, отступающих на другом берегу Двины под напором Штейнгеля, и открыли артиллерийский огонь против укреплений Полоцка. На правом берегу отряды Витгенштейна атаковали город с разных сторон, на левом берегу корпус Штейнгеля был остановлен заслоном французов в 5 верстах от Полоцка. Ожесточённые бои происходили на единственном мосту через Полоту на северных подступах к городу.
Маршал Сен-Сир, видя угрозу окружения, отдал приказ о скрытном ночном отступлении из города на левый берег Двины. В полночь начался приступ Полоцка и продлился до 2 часов утра 20 октября. Сен-Сир сжёг за собой мосты; 2 тысячи баварцев, не успевших переправиться, попали в плен.
Софийский собор в наши дни. Вид с левого берега Западной Двины
Баварскому корпусу удалось в 8 часов утра 20 октября сбить авангард Штейнгеля с позиций и открыть путь к отступлению. Витгенштейн отправил на усиление Штейнгеля 12 тысяч солдат под командованием генерал-лейтенанта Сазонова. Сам он ожидал возведения мостов через Двину. После постройки мостов Витгенштейн, переправившись на левый берег, соединил силы с корпусом Штейнгеля и стал преследовать корпус маршала Сен-Сира.
Сен-Сир, избежав окружения, вывел бо́льшую часть своих войск. Около 2 тысяч французов не успели переправиться через Двину и были вынуждены сдаться. В Полоцке русские захватили одну пушку и большие запасы фуража. Штейнгель в боях взял до 500 пленных. Сен-Сир был тяжело ранен в ногу, после чего передал командование 2-м французским корпусом генералу Леграну, а 6-й остался под командой генерала Вреде.
Витгенштейн в рапорте императору Александру I оценил потери французов в Полоцке в 6 тысяч убитых и раненых (помимо пленных). Согласно надписи на мраморной плите на стене Храма Христа Спасителя русские потеряли убитыми и ранеными около 8 тысяч солдат.
За взятие Полоцка Витгенштейн был произведён в генералы от кавалерии. Занятие Полоцка означало серьёзную угрозу коммуникациям Наполеона и вынудило его отвлечь против Витгенштейна резервный корпус под командованием Виктора.
В честь победы русских войск под Полоцком, у Красного моста через Полоту установлена мемориальная плита следующего содержания:
«Через этот мост русские
войска под командованием
генерала Витгенштейна и отряда
Петербургского ополчения
после ожесточенных боев
6-8/19-21/октября 1812 г.
вошли в город и освободили
его от неприятеля, чем положили
начало изгнанию наполеоновских
войск с белорусской земли.
С того времени в память о
погибших и пролитой крови
этот мост стал называться
„КРАСНЫМ“»