Шведская эскадра была обнаружена 6 июля 1788 г. западнее острова Гогланд. Она несколько превосходила русскую по силам, состоя из 16 линейных кораблей, 12 фрегатов и 6 малых кораблей. Адмирал С. К. Грейг отдал команду идти на сближение с неприятелем. Стороны произвели маневрирование, выстраиваясь в боевую линию для предстоящего морского сражения. В 17 часов русский авангард сблизился со шведами и завязал с ними артиллерийский бой. Вскоре в сражение вступили и главные силы сторон. Фактически в Гогландском морском сражении приняли участие со стороны русских 17 линейных кораблей (их фрегаты и другие суда находились за боевой линией), со стороны шведов – 16 линейных кораблей и 7 больших фрегатов. Эскадры сражались в соответствии с правилами линейной тактики, которая к тому времени морально устарела и на Черном море ее успешно ниспроверг прославленный флотоводец Федор Федорович Ушаков.
С. К. Грейг и Т. Г. Козлятинов атаковали вражеский авангард. Флагманский линейный корабль русского командующего «Ростислав» подошел на картечный выстрел к шведскому флагману «Густав III», на котором находился герцог Карл Зюдерманландский. Через полтора часа огневого поединка флагман шведов оказался настолько избит прямыми попаданиями с «Ростислава», что его пришлось на буксире выводить из окружения[87].
После этого С. К. Грейг обрушил огонь «Ростислава» на неприятельский вице-адмиральский корабль «Принц Густав». Тот скоро не выдержал шквала артиллерийского огня и спустил королевский флаг. В плен попали вице-адмирал граф Вахтмейстер и 539 человек команды линейного корабля. Но и русские потеряли один линейный корабль «Владислав». В ходе сражения он попал в гущу шведского флота и не был поддержан другими русскими кораблями. Хотя адмирал С. К. Грейг и подавал соответствующие сигналы со своего флагмана, «Владислав» попал во вражеский плен.
С наступлением вечерних сумерек шведы, не выдержав жестокого огня русского флота и боясь новых потерь, поспешно ушли в крепость Свеаборг, под защиту ее береговых батарей. Вместе с собой неприятель уводил плененный русский линейный корабль «Владислав». В Гогландском морском сражении, которое продолжалось в течение шести часов, противники сражались с завидным упорством. Они применяли зажигательные и разрывные снаряды, стрельба которыми с близкого расстояния привела к большим потерям. Гогландское морское сражение, по признанию отечественных морских историков, стало самым кровопролитным за всю историю парусного флота России. Потери на кораблях русской эскадры составили 326 человек убитыми и 782 ранеными. Эти сведения, представленные адмиралом С. К. Грейгом, по-видимому, преуменьшены.