Ved freden i Roskilde i februar 1658 ble Skåne (med Bornholm), Halland og Blekinge, samt Båhuslen og Trondhjems len i Norge avstått til Sverige. Det verste for Frederik var kanskje at Corfitz Ulfeldt, som hadde flyktet til Sverige, satt som svensk representant ved forhandlingene. Kort tid etter brøt Karl Gustav freden og rykket frem mot København, som ble beleiret. Frederik III deltok aktivt i forsvaret. Han ble oppfordret til å forlate hovedstaden, men sa at han ville «dø i sitt rede», noe som gjorde ham umåtelig populær blant Københavns borgere. Beleiringen mislyktes, ikke minst takket være byens kvinner, som deltok aktivt i forsvaret av vollene. Da Karl døde i begynnelsen av 1660 ble det sluttet fred i København. Roskildefreden av 1658 ble i hovedsak bekreftet, ettersom de skånske områdene og Båhuslen forble svenske. Ettersom Trondhjems len ble frigjort av norske styrker høsten 1658 kom området tilbake til Norge. Likeledes hadde Bornholm allerede i 1658 befridd seg selv og overdratt øya til Frederik III som arv og eiendom.