Den hollandske flåde bestod af 41 skibe forsynet med i alt 1413 kanoner og var under ledelse af admiralJacob van Wassenaer Obdam med Egbert Bartolomeusz Kortenaer som flagkaptajn. Den svenske flåde under admiral Carl Gustav Wrangel bestod af 45 skibe med i alt 1838 kanoner. En dansk flådeafdeling, som talte 7 skibe med 280 kanoner under admiral Henrik Bjelkes kommando var forhindret i at assistere hollænderne på grund af nordvestenvinden. De måtte ankre op syd for Hven og kunne først slutte sig til hollænderne, efter at slaget var overstået.
Hollænderne var ankommet til den nordsjællandske kyst flere dage før slaget, men ugunstig vind havde tvunget dem til at ankre op ved Hornbæk. Svenskerne udlagde i mellemtiden størstedelen af deres flåde mellem Helsingør og Helsingborg, hvor de lå i ly af Kronborg, som var blevet erobret af svenske landstyrker. En mindre del af den svenske flåde var trukket længere sydpå mod Hven, hvor den lå som reservestyrke.
Da vinden den 29. oktober vendte til hollændernes fordel, gik de til angreb og passerede Kronborg ved 8-9 tiden om morgenen. De gik tæt på den skånske kyst, så Kronborgs kanoner opnåede ikke at gøre nogen synderlig skade.
Slaget kom derefter til at foregå i det nordlige Øresund, og det varede omkring 5 timer. Der blev kæmpet intenst på begge sider, men svenskerne trak sig til sidst tilbage, og hollænderne kunne fortsætte mod København.