27 июня шведский флот показался в виду Ревеля. Грейг 1 июля доносил, что 26-го числа отправил все транспортные суда в Кронштадт, а сам с эскадрами своей и Фондезина снялся с якоря, но из-за противных ветров еще не ушел далее Березовых островов. Он пользовался всякой возможностью для усиленного обучения команд, состоящих в значительной мере из рекрутов и портовых матросов, и вел разведку противника. В ожидании сражения флотоводец перешел на 100-пушечный «Ростислав», сильнейший корабль эскадры. Адмирал искал противника, чтобы с ним сразиться. Легкий ветер позволил эскадре продвинуться к восточной оконечности Гогланда. Вечером 5 июля эскадра обогнула остров, и Грейг получил известие о близости шведов. В 6.00 6 июля шедший впереди фрегат «Надежда благополучия» дал сигнал, что видит на северо-западе 13 судов; вскоре с фрегата уточнили, что впереди — неприятель. В 7.30 Грейг дал сигнал флоту приготовиться к бою, в 8.00 — построиться в линию баталии перпендикулярно курсу и идти в строю фронта. Маловетрие позволяло медленно сближаться с неприятелем.
Эскадра С. К. Грейга состояла из 17 линейных кораблей с 1220 орудиями; кроме того, на 8 фрегатах, 3 катерах, 2 бомбардирских кораблях и 3 вспомогательных судах насчитывалось 272 пушки. Шведский флот под флагом генерал-адмирала герцога Зюдерманландского насчитывал 16 кораблей, 7 больших фрегатов с 900 крупными и 436 меньшими пушками (всего 1336 орудий); вес бортового залпа шведов составлял 720 пудов против 460 у русских. Кроме того, у шведов было 5 малых фрегатов и 3 пакетбота.
К 11.00 по приказу адмирала западнее Гогланда выстроилась боевая линия: авангард составили корабли M. П. Фондезина, арьергард — корабли Т. Г. Козлянинова, протянувшиеся с юго-запада на северо-восток; при дистанции между кораблями в два кабельтова линия растянулась более чем на семь верст. Эскадру Козлянинова Грейг поставил в арьергард специально, как более надежную. Перед боем команды в 11.30 получили обед; сигнал был обедать с поспешностью. К полудню появились корабли противника, направлявшиеся в линии баталии на юг курсом, уводившим от русской эскадры, которая шла на запад и огибала Родшхер с севера. Но Грейг, как известно, намеревался вступить в бой и ранее не раз требовал от командиров кораблей решительно атаковать неприятеля и привести его в замешательство; основное внимание адмирал обратил на артиллерийскую подготовку экипажей. После обнаружения шведов русская эскадра прибавила парусов и изменила курс на запад, в сторону противника; авангард и арьергард поменялись местами, причем корабли М. П. Фондезина стали отставать, особенно корабль «Дерис» капитана Коковцева.
До 15 00 шведы старались удалиться от русского флота, и только когда возможно стало определить соотношение сил, пошли на сближение строем фронта; в центре шел корабль генерал-адмирала, на правом фланге — вице-адмирала, на левом — контр-адмирала. Русская эскадра также шла в строю фронта. В 15.30 Грейг поднял сигнал атаковать неприятеля — каждому кораблю противолежащий. Это был пример той самой линейной тактики, которую в английском флоте признавали единственно возможной. Сам адмирал направлялся на корабль шведского генерал-адмирала. Он неоднократно поднимал сигналы своим капитанам прибавить парусов и сомкнуть линию. На правом фланге был Фондезин, которому Грейг дал сигнал «спуститься на неприятеля». Остальным кораблям он сигнализировал позднее; однако по ошибке первый корабль Козлянинова «Болеслав», последующий «Мечеслав» и последний в кордебаталии «Владислав» двинулись вместе с арьергардом и оказались вне линии, ближе к неприятелю, тогда как второй корабль авангарда «Иоанн Богослов» капитана Вальронта пошел по ветру, повернул оверштаг и оказался за линией.
В 16.00 находившийся под ветром шведский флот повернул и двигался навстречу русской эскадре; Грейг приказал идти на неприятеля, но корабли «Дерис», «Память Евстафия» и «Иоанн Богослов» при повороте отстали от боевой линии. Флагманский корабль Грейга «Ростислав» шел под всеми парусами впереди линии; он сигналами требовал от арьергарда вступить на свое место.
Когда в 17.00 русский авангард приблизился к шведскому на два кабельтова и неприятель открыл огонь, контр-адмирал Козлянинов начал пальбу, не дожидаясь сигнала адмирала. Скоро сражение вспыхнуло по всей линии. Так как кордебаталия и арьергард не подошли еще близко к неприятелю, адмирал продолжал спускаться с частью кораблей кордебаталии. Некоторые корабли отстали, а «Иоанн Богослов» оказался между линиями и пересек русский строй, направляясь к востоку.
Располагая тремя кораблями, флагман вступил в бой с авангардом шведов; четыре корабля кордебаталии после первых выстрелов также открыли огонь, причем «Ростислав» оказался на дистанции картечного выстрела от генерал-адмиральского корабля. К этому времени флоты были между островом Стеншхер и мелью Калбодегрунд, на полпути от Гогланда до Свеаборга.