Шёрншельд, очевидно, не рассчитывал на атаку поляков, но при сближении изменил курс на северо‑восточный, чтобы, идя в полветра, иметь лучшую возможность для маневрирования. Это не уберегло его от атаки. Возглавлявший польскую эскадру «Рыцарь Светы Ержи» первым вступил в бой, обстреливая шведский адмиральский корабль из носовых орудий и одновременно стремясь взять его на абордаж. «Тигерн» оказался под огнем, но пытался ответным огнем и маневрированием избежать абордажного боя. Маневры не помогли. После недолгой перестрелки «Рыцарь Светы Ержи» сумел приблизиться к борту противника. В этот момент был смертельно ранен вице‑адмирал Шёрншельд, что сказалось на дальнейшем ходе сражения, так как никто не управлял действиями кораблей. Тогда же на помощь флагману пришел пинк «Панна Водна», который атаковал шведский адмиральский корабль с кормы. По носу последнего маневрировал галеон «Лятачи Елен» под командованием капитана Эллерта Аппельманна, готового перехватить его в случае попытки бегства или вступить в бой со спешащими на помощь другими шведскими кораблями.
Другая польская эскадра ударила по другому флагманскому кораблю «Пеликанен», но тот избежал абордажа. К нему пробовал приблизиться «Круль Давид», но все закончилось обменом пушечными залпами. Удачнее действовал «Водник», который после перестрелки все же сошелся с галеоном «Солен». На помощь ему поспешил и флейт «Бялы Лев». Атакованный двумя противниками шведский корабль оказался в безвыходной ситуации, поэтому кто‑то из офицеров поручил взорвать его. Это был последний этап битвы, так как в это время экипажи кораблей первой эскадры взяли шведский флагманский корабль «Тигерн», заплатив за этот успех смертью своего командующего, адмирала Дикмана. Остальные шведские корабли стали уходить с рейда Гданьска, направляясь в открытое море. За ними в погоню устремились галеон «Лятачи Елен», пинки «Арка Ноего», «Панна Водна» и «Злоти Лев» вместе с флейтами «Кражни Крук» и «Бялы Лев». Погоня длилась недолго. У Гельской косы первым отвернул «Панна Водна», сделав вдогонку шведам три выстрела. Остальные корабли приняли это за сигнал к повороту назад и тоже прекратили погоню.
Это сражение, известное как битва под Оливой, принесла известность польскому флоту. Шведы потеряли в ней 2 корабля и оставили акваторию; с польской стороны были повреждены 3 корабля – «Рыцарь Светы Ержи», «Круль Давид» и «Водник». Густав‑Адольф рвал и метал. Биограф короля Герман Харте отмечал, что шведский король беспрестанно повторял: «Дрожащие от страха купцы разгромили людей, которые сделали войну своей профессией!»