Wojsko Polskie nad Dźwiną pojawiło się na początku września 1919 roku. W połowie miesiąca linia tej rzeki aż po ujście Dryssy była już opanowana. Wyjątek stanowiło przedmoście Dyneburga, które pozostawało w rękach Bolszewików. Polskie dowództwo gotowe było zdobyć całe miasto, jednak sprzeciw Wojskowej Misji Ententy ograniczył planowaną na koniec września operację tylko do lewego brzegu Dźwiny.
Pierwsza bitwa o Dyneburg rozpoczęła się rankiem 27 września 1919 roku, w 314. rocznicę zwycięstwa pod Kircholmem. Natarcie przeprowadziła 1. Dywizja Piechoty Legionów składająca się z 1., 5. i 6. Pułków Piechoty Legionów. Łącznie było to około 7000 „bagnetów”, 140 karabinów maszynowych, 19 dział polowych, 15 dział ciężkich, 2 pociągi pancerne oraz 24 czołgi, które odegrały kluczową rolę w ataku. Był to zresztą jeden z pierwszych polskich pancernych ataków w historii.
Pojawienie się polskich czołgów zwykle powodowało popłoch i odwrót Bolszewików. Bez większego problemu udało się zająć przedmieścia Dyneburga. Do miasta, zgodnie z ustaleniami, Wojsko Polskie nie wkroczyło. Wysadzono więc most drogowy oraz kładkę. W rękach wroga pozostał jednie fort strzegący mostu kolejowego.
Atak na lewobrzeżną część twierdzy rozpoczął się ostrzałem artyleryjskim o godzinie 5:10 dnia 28 września. Dwadzieścia minut później rozpoczęło się natarcie prowadzone przez trzy kompanie z 1. i 5. Pułku Piechoty Legionów przy wsparciu czołgów oraz pociągu pancernego "Śmiały". Trwało ono nieco ponad godzinę i o 6:45 pozycje wroga zostały zdobyte. Podczas dwóch dni walk Polacy stracili 13 oficerów oraz 253 szeregowych zabitych i rannych. Straty Bolszewików to kilkuset zabitych. Do niewoli wzięto też około 400 jeńców.
Trzy miesiące później, 30 grudnia 1919 roku, podpisano w Rydze tajne polsko-łotewskie porozumienie w sprawie militarnego współdziałania obu państw w działaniach prowadzonych w Łatgalii. Przewidywało ono natarcie na Dyneburg 3 stycznia 1920 roku. Operacji tej nadano kryptonim "Zima". W ataku wziąć miały udział 1. i 3. Dywizja Piechoty Legionów (ok 30 tysięcy. żołnierzy) oraz 3. Dywizja Piechoty Armii Łotewskiej (ok. 10 tysięcy).
Natarcie na Dyneburg rozpoczęło się planowo - rankiem 3 stycznia. Wziął w nim udział 1 Pułk Piechoty Legionów, którzy przy mrozie około −25 °C, łatwo sforsował Dźwinę i około godziny 13.00 opanował twierdzę. Dwie godziny później całe miasto było już w rękach Polaków. Straty były stosunkowo niewielkie: 12 poległych oraz 37 rannych. Do niewoli dostało się ponad 400 Bolszewików. Co prawda część sił wroga wycofała się w rejon Wyszek, ale następnego dnia zostały rozbite. Rozpoczęło się wyzwalanie Łatgalii. I choć Bolszewicy 8 stycznia podjęli próbę przeprowadzenia kontrofensywy wzdłuż linii kolejowej Psków-Dynenburg, to nie udało się wyprzeć Polaków i Łotyszy z zajętych pozycji. Dopiero kolejne natarcie wsparte przez trzy pociągi pancerne przyniosło efekty. Nie na długo jednak, bo jeszcze tego samego dnia (9 stycznia) gen. Rydz-Śmigły przejął dowodzenia nad oddziałami łotewskimi uczestniczącymi w operacji i przygotował skoordynowany atak. Nastąpił on 12 stycznia przy szalejącej zamieci śnieżnej i zakończył się pełnym sukcesem Polaków i Łotyszy.
Ostatnia faza polsko-łotewskiej operacji rozpoczęła się 21 stycznia 1920 roku i doprowadziła do całkowitego wyparcia Bolszewików z Łatgalii. 6 dni później do Dyneburga przybył Józef Piłsudski. Udekorował on gen. Rydza-Śmigłego orderem Virtuti Militari i spotkał się z naczelnym dowódcą wojsk łotewskich gen. Balodisem. Władze łotewskie odznaczyły Józefa Piłsudskiego, gen. Rydza-Śmigłego oraz 61 żołnierzy polskich Orderami Laczplesisa. Straty polskie w operacji "Zima" wyniosły 2 920 żołnierzy zabitych, rannych, zaginionych, chorych i z odmrożeniami. Tych ostatnich było aż 1700. Świadczy to o tym, w jak trudnych warunkach przyszło Polakom walczyć o niepodległość swojego sąsiada.