17 июня Гасан-паша вновь повел свою эскадру на сближение с Лиманской флотилией, намереваясь атаковать ее с фланга. Однако мастерство его командиров оказалось невысоким: они не смогли успешно лавировать в мелководном лимане. Турецкий флагманский корабль сел на мель; другие суда остановились вокруг него. Используя расстройство боевого порядка неприятельского флота, Лиманская флотилия стремительно атаковала его.
Суворов, наблюдавший за ходом сражения с Кинбурнской косы, спустя 2 часа после начала боя послал депешу Потемкину: «Ура, светлейший князь! У нас шебека 18‑пушечная. Корабль 60‑пушечный не палит, окружен. Адмиральский 70‑пушечный корабль спустил свой флаг. Наши на нем».
Дружная атака небольших русских гребных судов была исключительно успешной. Неприятель не смог использовать своего превосходства в крупных парусных кораблях. Правда, Гасан-паша, кроме парусной эскадры (10 линейных кораблей и 6 фрегатов), располагал 40 боевыми гребными судами, которые могли легко маневрировать независимо от ветра и контратаковать русскую флотилию. Но перевес в сражении оказался на стороне русских моряков. После потери двух парусных кораблей и нескольких гребных судов Гасан-паша отступил к Очакову, а затем решил уйти в море.
Около 10 часов вечера турецкие корабли стали отходить от Очакова и направляться к выходу в море. Их путь лежал мимо Кинбурнской косы, на которой Суворовым были заранее установлены батареи. Гасан-паша рассчитывал пройти незаметно, однако на русских наблюдательных постах рассмотрели силуэты вражеских кораблей. Они шли плотной, сомкнутой колонной, что делало их очень уязвимыми для артиллерии. Неприятельская эскадра попала под сильнейший обстрел. «Наши ядра, – говорил Суворов, – пробивали оба борта, достигая до противного берега».
Чтобы полностью использовать критическое положение неприятеля и довершить его разгром, Суворов еще ночью послал курьера к командующему Лиманской флотилией с извещением о прорыве неприятельского флота из Очакова. На рассвете 18 июня флотилия в двух колоннах подошла к вражескому флоту и окружила его. Разделившись на несколько отрядов, русские суда атаковали одновременно сразу несколько вражеских кораблей. Одни из них, подожженные огнем артиллерии, горели и взрывались; другие оказывали упорное сопротивление. Русским морякам приходилось вплотную приближаться к ним, брать на абордаж и сражаться на палубах. В этих рукопашных схватках было убито и ранено 85 моряков; одна русская плавучая батарея была потоплена. Турки потеряли 11 кораблей.
Всего 17—18 июня 1788 г. потери османов составили 15 кораблей, в том числе 5 линейных кораблей и 5 фрегатов, на которых было около 500 орудий. Потери в людях превышали 6 тысяч человек, из которых 1673 человека было взято в плен. Победа русских в Очаковском сражении была достигнута благодаря мужеству и бесстрашию черноморских моряков, их взаимодействию с сухопутными силами. Высоко оценивая подвиги моряков, Суворов писал: «Жаль, что не был на абордаже; мне остается только ревновать!» Командующий флотилией в реляции отмечал, что из состава экипажей трудно выделить достойнейших, так как «все отличились храбростью и неустрашимостью, не поддающимися никакому описанию».
В то время как в Днепровско-Бугском лимане шли ожесточенные бои, большая часть русского Черноморского флота – Севастопольская эскадра находилась в своей базе. Шторм, выдержанный эскадрой в сентябре 1787 г., более чем на полгода вывел ее из строя. Лишь к весне 1788 г. боеспособность эскадры была восстановлена. Но командующий эскадрой контр-адмирал М.И. Войнович, зная о превосходстве турецкого флота, боялся встречи с Гасан-пашой и придумывал различные предлоги, чтобы уклониться от боя с неприятелем. Только после решительных требований Потемкина эскадра Войновича вышла в боевой поход.
18 июня 1788 г. корабли эскадры Войновича вышли из Севастополя и взяли курс к Днепровско-Бугскому лиману. В пути эскадра была задержана встречным ветром и лишь через 10 суток смогла достичь острова Тендра. Навстречу ей от Очакова двигался турецкий флот. Адмирал Гасан-паша, получивший донесение о приближении русской эскадры из Севастополя, сразу же принял решение дать ей сражение.
Русские моряки насчитали 45 турецких кораблей; впоследствии к противнику прибыло на подкрепление еще несколько боевых судов. По соотношению сил неприятель, несмотря на серьезные потери под Очаковом, имел большое преимущество. Против 2 русских линейных кораблей Гасан-паша располагал 17 линейными кораблями. Османы имели более 1500 орудий, а русские – всего лишь 550 орудий.