Lacki obszedł Szwedów łukiem i uderzył na nich ze skrzydła, a następnie rozbił. Gdy przybyły nowe oddziały szwedzkie, Lacki zawrócił i ponownie ruszył do szarży, która okazała się równie skuteczna. Ścigając uciekających Szwedów, Lacki wyszedł na tyły armii Karola IX, która wciąż broniła się w zabudowaniach Kircholmu. Widząc ogarniającą Szwedów panikę, Chodkiewicz rzucił na wzgórze wszystkie swe wojska. Na wzgórek kościelny, gdzie mieścił się sztab główny Szwedów, szeroką falą szła polsko-litewska piechota. Po trzech godzinach walki wszystkie wojska szwedzkie zostały rozbite i rzuciły się do ucieczki. Szwedzi uciekali w kierunku morza, gdzie czekała na nich stojąca na ryskiej redzie szwedzka flota wojenna. Karola IX od niewoli uratował szlachcic inflancki Henryk Wrede, który oddał mu swego konia, co przypłacił życiem (w nagrodę wdowa po nim otrzymała znaczne dobra, a królowa Krystyna przyznała jego potomkom tytuł baronów). Do pościgu za uciekającymi Szwedami dołączyli także miejscowi chłopi łotewscy, mszcząc się za liczne grabieże.

Po bitwie Bilans strat Wojska Rzeczypospolitej straciły ok. 100 żołnierzy (ok. 200 zostało rannych), z czego tylko 13 towarzyszy, oraz 150 koni. Rany odnieśli Wojna, Dąbrowa i Lacki.