Карл X совершил марш-бросок из Штеттина к Ютландии и осадил крепость Фредериксроде. Датчане, опасаясь десантов на острова, устроили блокаду побережья Шлезвига и шведского Гетеборга. В результате стычки у Фальстербо шведские корабли с десантом были отброшены назад и вернулись в свои порты. Оказалось, что шведский флот без помощи голландцев просто недееспособен против датчан. Однако Карл X не пал духом, он решил что «лучшая военно-морская стратегия — это полк своих солдат в порту противника», и зимой, когда очень сильные морозы сковали льдом узкие датские проливы, шведские войска перешли по льду Малый Бельт и быстро овладели почти всем Фюном.
16 февраля шведы заняли острова Тосинге и Лангеланн, днем позже переправились через замерзший Большой Бельт на Лолланд, а 18 февраля захватили Фальстер, после чего их отделял от Зеландии только один шаг. Этот шаг был сделан 22 февраля, и через три дня шведские войска подошли к датской столице. Король Дании Фредерик III был вынужден капитулировать и подписал 28 февраля 1658 года в Роскилле (Roskild) тяжелые условия мирного договора, согласно которому Швеции отходил скандинавский берег Зунда вместе со Сканией и Борнхольмом.
Таким образом, Дания была выбита из войны, и русские, лишившись союзника на море, также вынуждены были заключить мир со Швецией. Главной причиной перемирия со Швецией была бессмысленность войны, которая велась не за балтийские порты, а за власть над Речью Посполитой. Как только угроза унии Швеции и Речи Посполитой проходила (сначала осенью 1656 года, окончательно осенью 1657 года), русские предлагали мирные переговоры.