„Potop” szwedzki to najbardziej wstydliwy okres w życiu Jana Sobieskiego. Wespół z prawie całą armią kwarcianą zdradził swego dotychczasowego pana Jana Kazimierza i przeszedł na stronę Karola X Gustawa. Cóż z tego, że postąpił jak większość szlachty, jeśli był jednym z architektów kapitulacji wojska, a przy szwedzkim królu stał aż do marca 1656 roku, kiedy wojenna fortuna poczęła wyraźnie sprzyjać Rzeczypospolitej. Jan Kazimierz łaskawie przyjął skruszonego zdrajcę, który, by zmyć swą winę, natychmiast ruszył do boju. Królewski pułkownik odznaczył się już w bitwie pod Warką, brał udział w kampanii w Wielkopolsce i walczył pod Toruniem. Za te wyczyny otrzymał od władcy zaszczytny urząd chorążego koronnego. Na czele swego pułku brał udział w wyzwalaniu stolicy, a pod koniec lipca walczył w wielkiej trzydniowej bitwie na jej przedpolach.
Król szwedzki nie zdołał przyjść na odsiecz garnizonowi w Warszawie, ale nie zamierzał rezygnować z panowania nad miastem. Na czele około 18 tysięcy żołnierzy szwedzkich i brandenburskich elektora Fryderyka Wilhelma ruszył w rejon Pragi sądząc, że dopadnie tu część sił polskich. Polskie dowództwo, nie mając wieści o Brandenburczykach, pomimo sprzeciwu Stefana Czarnieckiego zdecydowało się wydać bitwę na prawym brzegu Wisły. Jan Kazimierz dysponował około 37-42 tysiącami żołnierzy, z czego tylko około 24 tysiące stanowiły regularne oddziały. Polacy usadowili się na ufortyfikowanym pasie wydm i planowali na tej silnej pozycji przyjąć uderzenie nieprzyjaciela, a następnie przystąpić do kontrataku.
28 lipca w godzinach popołudniowych nieprzyjaciel przybył na pole bitwy i rozpoznał stanowiska Polaków. Noc przebiegła na przygotowaniach do walki. Jan Kazimierz ściągnął zza Wisły wszystkie swoje siły i czekał. Doświadczony Karol Gustaw zaatakował nazajutrz. Szwedzi wiązali walką Polaków, umożliwiając flankowy marsz wojsk elektora przez Białołękę. Około godziny jedenastej manewr ten został zakończony.
W tym czasie na tyły Szwedów rzucono sojusznicze oddziały Tatarów, które zostały odrzucone dopiero przez jazdę generała Henryka Horna. Szwedzki monarcha, dostrzegając bierność Polaków, postanowił przerzucić całość sił w kierunku brandenburskiego sojusznika, odpierającego ogniem piechoty i dragonów ataki Polaków i wspomagających ich Tatarów. Sprzymierzeni połączyli swe siły i kontynuowali marsz podmokłymi łąkami w kierunku Bródna. Ciągle niepokojeni przez lotne oddziały tatarskie, uformowali swe szeregi.
Manewr nieprzyjaciela zaskoczył Jana Kazimierza, zmuszając go do zmiany frontu. Jednocześnie król wysłał jazdę, by zaatakowała Szwedów. Znów do akcji ruszyli Tatarzy, którzy natarli na tabory sprzymierzonych, bronione skutecznie przez samego Karola Gustawa. Wkrótce na Szwedów ruszyła kawaleria litewska. Część oddziałów utknęła w błocie, ale licząca około półtora tysiąca ludzi grupa Aleksandra Pałubińskiego parła do przodu. Nie zatrzymał jej ogień piechoty i dział. W pełnym biegu rozbiła skwadronów z pierwszej i drugiej linii nieprzyjaciela. Wówczas do kontrnatarcia przystąpił król szwedzki. Litwini nie dawali za wygraną i tylko przytomność walczącego po szwedzkiej stronie Bogusława Radziwiłła uratowała szwedzkiego monarchę. Celnym strzałem powalił on Jakuba Kowalewskiego, przemianowanego w „Potopie” Sienkiewicza na Rocha Kowalskiego, który niechybnie zabiłby Karola Gustawa. To był przełomowy moment bitwy. Impet litewskiej husarii, nie wspartej posiłkami, został wyhamowany. Na innych odcinkach frontu nie zanotowano większych sukcesów.
Polskie dowództwo nie zamierzało czekać na spodziewany atak sprzymierzonych. Płynąca za plecami Wisła, na której był zaledwie jeden most, w zasadzie uniemożliwiała odwrót w wypadku porażki, dlatego podjęto decyzję o ewakuacji piechoty i artylerii. Nazajutrz sprzymierzeni ruszyli do natarcia, którego nie wytrzymały oddziały osłonowe. Litwini wycofywali się w kierunku Białołęki, król zaś z oddziałami koronnymi przeprawiał się przez most. Prawe polskie skrzydło widząc, że droga odwrotu jest zatarasowana, wykorzystało zamieszanie, skryło się w tumanach kurzu i uszło na wschód obok szwedzkich stanowisk.
Porażka była bolesna, ale nie kompletna. Jan Kazimierz stracił część artylerii i około 2 tysiące żołnierzy przy o połowę mniejszych stratach przeciwnika. Udało mu się jednak ocalić armię.
Bitwa warszawska była ważnym, choć nie do końca wyjaśnionym momentem w karierze młodego Sobieskiego. W przeddzień batalii do pułku chorążego koronnego przydzielono Tatarów pod wodzą Subchan Gasiego agi.
Tadeusz Korzon w swej pracy „Dola i niedola Jana Sobieskiego”, a za nim inni historycy ze Zbigniewem Wójcikiem na czele, sugerują, że Tatarami dowodził właśnie Sobieski. Jeżeli tak było, to młody pułkownik wykazał się nie lada talentem. Zawzięcie atakował tyły przeciwnika, podczas jego flankowego marszu w kierunku Białołęki, absorbując samego Karola Gustawa. Pokonani, w ostatnim dniu dali się Szwedom mocno we znaki. Dla Sobieskiego było to ważne doświadczenie. Przekonał się jak dużą wartość przedstawia lekka i szybka kawaleria tatarska, z którą wielokrotnie będzie musiał toczyć ciężkie boje.