6 (17) июля русский флот под командованием С. К. Грейга в составе 17 линейных кораблей («Ростислав» (флагман), «Дерись», «Память Евстафия», «Кир и Иоанн», «Ярослав», «Виктор», «Владислав», «Изяслав», «Родислав», «Мстислав», «Святой Петр», «Святая Елена», «Болеслав», «Вышеслав», «Всеслав», «Мечеслав», «Иоанн Богослов»), восьми фрегатов и восьми мелких судов (всего 1236 пушек) между островами Стеншер и банкой Кольбодегрунд встретил шведский флот в составе 15 линейных кораблей, восьми фрегатов и восьми мелких судов (1336 пушек) под командой герцога Зюдермандландского. Сражение началось в 17:00 и продолжалось до полной темноты и наступления штиля. Во время сражения ветер постепенно стихал, и к концу боя обе стороны вынуждены были использовать шлюпки, чтобы обеспечить кораблям хоть какой-нибудь маневр.
Описание боя с русской и шведской стороны значительно разнится. Единственное, что признают и русские, и шведские историки, — сражение развивалось по классическим канонам линейной тактики. Из-за ошибки в маневре в русскую боевую линию встали только 15 боевых кораблей, остальные отстали, шведам удалось поставить в линию все 15 кораблей. Началась ожесточенная артиллерийская дуэль, первым результатом которой стало тяжелое повреждение шведского 70-пушечного линейного корабля «Густав III», который вышел из линии. Из линии вышел и флагманский корабль Грейга «Ростислав», но, исправив повреждения, к 20:00 вновь встал в боевой строй. В это время передовые корабли шведов чуть не выскочили на отмель и начали маневр уклонения. Русские корабли также отклонились в сторону, при этом они вынуждены были буксироваться шлюпками, так как ветер уже совсем стих. Но в 21:00 артиллерийская дуэль вновь возобновилась.