Karl Gustav-Krigen indledtes i 1657 med at Frederik 3. 1. juni erklærede Sverige og Karl X Gustav krig. „Karl Gustav-krigen“ skulle være revanche for nederlaget i Horns krig og Torstensonkrigen i 1645. Først den 20. juni modtog svenskekongen krigserklæringen i den vestpreussiske by Torun.
Krigen indledes med et mislykket angreb på det svenskbesatte bispedømme Bremen-Verden, hvorefter svenskerne besatte Jylland, mens Danmark sejrede i Halland og generobrede de i 1645 afståede norske landsdele.
I oktober indtog svenskerne Frederikodde (Fredericia), efter et slag, hvor over 1000 danske soldater faldt, og rigsmarsk Anders Bille dødeligt såret, blev taget til fange.
Det blev en kraftig isvinter, og bælterne frøs til, så de svenske tropper kunne krydse over bælterne; først til Fyn, som nås 30. Januar 1658. Via Tåsinge, Langeland, Lolland, og Falster nåede man Sjælland, og allerede den 15. februar stod de 20 km fra København. Den danske statsledelse var lammet af panik og Frederik 3. indgik den ydmygende fredsaftale i Roskilde.
Hvad danskerne på det tidspunkt dog var uvidende om, men svenskerne derimod gennem opsnappede depescher vidste, var at Brandenborg og Østrig besluttet at sende 23 000 soldater til Danmark som hjælp mod det svenske kvælergreb. De svenske fredsforhandlere begyndte sænke deres krav på landafståelser og fik meget travlt med at få freden undertegnet. Når danskerne siden fik nys om undsætningshæren var det for sent.
Den svenske konge, Karl X Gustav, var dog ikke tilfreds med aftalen og fortsatte krigen frem til sin død i 1660.