Żądny sławy Kara Mehmed pasza przeprawił się 6 października mostem w Ostrzyhomiu na lewy brzeg Dunaju i, zebrawszy do 30 tys. żołnierzy, pomaszerował na odsiecz strzegącej przeprawy przez Dunaj niewielkiej forteczce Parkany. Sobieski, licząc, że uprzedzi nadejście Turków, ruszył 7 października na czele 6-tys. jazdy naprzód. Chciał zająć Parkany i tam poczekać na nadejście sił głównych. Turcy byli jednak szybsi. Awangarda polska pod wodzą strażnika koronnego Stefana Bidzińskiego natknęła się na przeważające siły jazdy tureckiej i została z łatwością pokonana. Sobieski rzucił do ataku jazdę Jabłonowskiego i odparł Turków, po czym kazał utrzymać pozycje do nadejścia reszty wojsk. Te szły jednak powoli, a tymczasem Turcy pozorowaną ucieczką wywabili Polaków w pole i rozbili. Król zwrócił się frontem do zachodu, chcąc wyrąbać sobie odwrót. Manewr ten jednak wojsko wzięło mylnie za chęć opuszczenia pola bitwy i rzuciło się do ucieczki. Turcy uderzyli teraz na Polaków, kładąc trupem ok. 500 żołnierzy. Król znalazł się w niebezpieczeństwie, a gdy poległ podobny doń wojewoda pomorski Władysław Denhoff, uradowani Turcy sądzili, że zgładzili swego pogromcę spod Wiednia. Kara Mehmed przesłał do Budy buńczuczne wieści o zwycięstwie, a wdzięczny Kara Mustafa podesłał mu kilka tysięcy jazdy.
Radość Osmanów była jednak przedwczesna. Jan III nie upadł na duchu i gromił oficerów nawołujących do zakończenia wyprawy: „Co fortunę mówicie, zdepcę ją jako małpę, a Boga przeprosiwszy, obaczycie jutro odmianę”. Chciał zaskoczyć Turków i wydać im nową bitwę.
Tym razem precyzyjnie przygotował plan batalii. 9 października 30-tys. armia sprzymierzonych, mająca nad jazdą turecką zdecydowaną przewagę w artylerii i piechocie, podeszła pod Parkany. Prawe skrzydło wiódł Hieronim Lubomirski, centrum ks. Karol, lewe skrzydło hetman Jabłonowski. Kara Mehmed, pewny swego, przyjął bitwę mimo niedogodnej pozycji – jego tyły zamykały rzeki Hron i Dunaj, a w razie porażki jedyną drogą odwrotu był drewniany most przerzucony przez Dunaj z Parkanów do Ostrzyhomia. Sobieski wiedział o tym i dążył do oskrzydlenia Turków od strony rzeki i odcięcia ich od mostu.
Walka zaczęła się koło południa. Kara Mehmed uderzył z całą siłą na lewe skrzydło sprzymierzonych, aby zepchnąć je do rzeki. Hetman Jabłonowski wytrzymał jednak to natarcie i ściągał na siebie coraz nowe siły nieprzyjaciela. W tym czasie wojska prawego skrzydła, gdzie znajdował się polski król, niepostrzeżenie posuwały się ku zamkowi w Parkanach. Gdy wódz turecki rozpoznał manewr przeciwnika, było już za późno – prawe skrzydło i centrum uderzyły na osłabione tu szyki osmańskie. Do szarży poderwały się husaria Hieronima Lubomirskiego, rajtarzy ks. Karola, a nawet husarze Jabłonowskiego. Kara Mehmed rzucił się do ucieczki, a za nim reszta wojska. Turcy umykali przez most, ten jednak nie wytrzymał masy uciekających oraz ostrzału artyleryjskiego i zawalił się. Jedynie ok. 800 żołnierzy z Kara Mehmedem zdołało przedostać się na drugi brzeg. Turcy próbowali zatem przebić się przez linie piechoty polsko-cesarskiej, ale zostali odparci. Tymczasem piechota opanowała zamek i wysiekła janczarów, rozsierdzona widokiem odciętych głów poległych dwa dni wcześniej Polaków. Zmasowany ogień artyleryjski na rzekę, nad którą tłoczyły się rozbite wojska tureckie, dopełnił pogromu. Straty tureckie były przerażające – poległo trzech paszów, dwóch dostało się do niewoli, a od szabel i w falach Dunaju zginęło do 10 tys. żołnierzy. Straty sojuszników nie przekroczyły 1 tys. ludzi.
Sobieski wyżej cenił zwycięstwo pod Parkanami niż pod Wiedniem – i słusznie. Tam bowiem odparł Turków i uratował siedzibę cesarską, a tu zniszczył ich zupełnie, pozbawiając możliwości dalszej walki. Kara Mustafa, przybity nową klęską, wyjechał do Belgradu. Zawiedziony sułtan miał już dość nieudolnego wodza i kazał go udusić.