На рассвете 23 мая (3 июня) 1790 года установился легкий восточный ветер. По атаке Круза «атаковать неприятеля на ружейный выстрел» русская эскадра стала спускаться на шведов со стороны фронта, но вскоре легла на курс, почти параллельный врагу. Около 4 часов утра передовые отряды сблизились и открыли огонь. Советник императрицы Храповицкий отмечал: «Ужасная канонада слышна с зари почти во весь день в Петербурге и Царском Селе». На случай неблагоприятного исхода боя в Кронштадте в это время готовились к отражению шведской атаки. Для прикрытия фарватера были использованы все оставшиеся корабли и суда. На укрепления и батареи мобилизовали всех, кого смогли: рекрутов, мастеровых, купцов, мещан, воспитанников Морского корпуса и т. д.
Движение было медленным, поэтому только через час все корабли вступили в бой. Большие шведские фрегаты вошли в линию, заняв места между своими линейными кораблями. Шведы сосредоточили огонь на русском флагмане и одновременно пытались подавить превосходящими силами северный фланг противника. В пятом часу командиру русского авангарда (северный фланг) Сухотину ядром оторвало ногу, и он передал командование командиру своего флагмана «Двенадцать апостолов» капитану Фёдорову и попросил не ослаблять натиск. На помощь правому (северном) флангу выдвинулся со своим отрядом Деннисон. Его фрегаты вошли в промежутки между кораблями. По сигналу Фёдорова корабли Деннисона прекратили огонь, мешавший русским кораблям, и фрегаты двинулись дальше на фланг.
Во время сражения ветер менялся. С 7 часов перестрелка стала стихать, шведские корабли уклонились к западу, а русские их не преследовали. К 8 часам ветер стих и корабли оказались на таком расстоянии друг от друга, что бой прекратился. В 11 часу из Бьёркезунда вышел шведский отряд из 20 гребных судов. Их король послал на помощь корабельному флоту. Шведы хотели атаковать ближайшие русские корабли, но были отражены фрегатами Деннисона, которые на вёслах выдвинулись навстречу врагу. После небольшой перестрелки шведы отступили и скрылись в шхерах.
Тем временем ветер снова сменился и после полудня стал усиливаться. Оказавшись на ветре, шведские корабли повернули на юг, легли параллельно русской эскадре и атаковали её, сосредоточив огонь на флагмане «Иоанне Крестителе» и главных силах Круза. Однако перестрелка шла на дальней дистанции, продолжалась около и не вызвала особого ущерба. В 3-м часу флоты снова разошлись и бой прекратился. В 6 часу вечера шведский флот снова сблизился с нашими кораблями, но на близкую дистанцию не подошел. Поэтому сражение оставалось нерешительным, обе стороны не потеряли ни одного корабля. Только один русский корабль, «Иоанн Богослов», ушёл в Кронштадт для ремонта. Раненого контр-адмирала Сухотина также отправили на базу (он скончался от полученных ран), но его флаг остался на корабле, чтобы не показать потери.