Четыре дня сильный ветер и волнение не давали начать битву, лишь к утру пятого дня (2 сентября) ветер стих. Воины Антония – 4 тысячи отборных легионеров и 2 тысячи лучников – начали садиться на корабли. Сам Антоний в лодке объезжал флот, успокаивая и ободряя воинов: он призывал их полагаться на массивность кораблей и биться уверенно, словно на суше.
Наконец флот построился в горловине залива. Его левым флангом, включавшим две эскадры, командовал Гай Сосий (тот самый консул, чье выступление в сенате послужило сигналом к войне). В центре стояла одна эскадра под командованием Марка Октавия; правым, наиболее мощным флангом, включавшим 3 эскадры, командовал Геллий Публикола; там же находился и сам Антоний. 60 кораблей Клеопатры находились позади боевой линии, образуя подвижный резерв.
Со стороны открытого моря в залив вошли либурны Октавиана и Агриппы. При взгляде на неподвижно стоящие суда противника Агриппа решил, будто они отдали якоря. Вопреки ожиданиям Антония он не стал атаковать его линию, а построил свой флот на почтительном расстоянии. Сам Агриппа командовал левым флангом, стоявшим против сильнейшего – правого фланга антонианцев. Центром октавианцев командовал Луций Аррунций, правым флангом – Марк Лурий. Октавиан, как и Антоний, находился на правом фланге своего флота.
Если Антоний действительно собирался прорывать блокаду, то именно этого хотел и Агриппа. Перед ним стояла задача выманить антонианцев в открытое море. Юркие либурны имели преимущество в скорости перед судами Антония, вдвойне неуклюжими из-за недостатка гребцов. Затем следовало разрушить строй врага, расколоть его фланг и центр. Но план этот долго не удавалось осуществить: к разочарованию Агриппы, флот Антония оставался на месте.
К полудню задул попутный для антонианцев ветер, и флот Антония двинулся на врага. Обрадованный Агриппа приказал дать задний ход, завлекая противника как можно дальше в море. Вскоре корабли сблизились, и началось сражение.
Это была весьма примечательная для того времени морская битва. В ней не было ни абордажных схваток, ни таранных ударов: суда Антония были неуязвимы для либурн, зато либурны легко увертывались от неуклюжих громадин. Сражение свелось к перестрелке. По три-четыре либурны окружали «плавучую крепость», засыпая ее стрелами, горящими дротиками и горшками с зажигательной смесью. С высоких бортов триер и пентер отвечали тем же и стреляли из катапульт.
Бой длился уже достаточно долго, когда Агриппа начал растягивать левый фланг, стремясь зайти в тыл неприятелю. Публикола, командовавший правым флангом Антония, вовремя разгадал этот маневр и повторил его, но при этом его эскадры оторвались от центра. В промежуток устремились суда Аррунция.
В этот момент 60 кораблей Клеопатры поставили паруса и, прорвавшись сквозь ряды своих и врагов, резко повернули на юг и ушли в сторону Пелопоннеса. Антоний в сопровождении лишь двоих приближенных перешел со своего флагмана на пентеру и ринулся вслед за царицей. Уже с Пелопонесского берега он послал гонца к Канидию – с приказом отступать с войском в Македонию.
Этот эпизод считают одним из самых загадочных в истории Рима. Некоторые историки утверждают, что Антоний и Клеопатра с самого начала не верили в успех сражения, поэтому их основная задача была любой ценой добраться самим до Египта, где Антонию подчинялись еще 11 боеспособных легионов. Так что царица и ее друг бежали, как только предоставилась такая возможность. Есть и другое мнение: после маневра Аррунция, вклинившегося между центром и правым флангом антонианцев, флот Антония оказался под угрозой окружения. Видя это, корабли левого фланга и центра спешно вернулись в залив; но правый фланг не смог сделать того же из-за стоявшей сзади флотилии Клеопатры. Тогда моряки правого фланга сдались, подняв весла и прокричав приветствие Октавиану. Оказавшись перед угрозой пленения, Клеопатра прорвалась и ушла со своими кораблями. Антоний же больше беспокоился о ее судьбе, чем о судьбе войска (этот факт остается неизменным во всех версиях).
После бегства Антония битва продолжалась еще несколько часов.
Напрасно цезарианцы кричали противникам о бегстве их предводителя: воины Антония сражались насмерть. Но их храбрость уже не могла спасти положения: к четырем часам дня флот Антония был окончательно разбит и загнан в залив, где и сдался. Число погибших с обеих сторон достигало 5 тысяч человек.
Сухопутное войско держалось еще семь дней. Лишь после того как отчаявшийся Канидий бежал к Антонию, оставшееся без командующего войско сдалось победителю.
Антоний и Клеопатра укрылись в Александрии. 1 августа 30 г. до н. э. в гавани Александрии появился флот Октавиана. Последние легионы и корабли Антония перешли на сторону «молодого Цезаря». Антоний закололся, Клеопатру взяли под стражу. Через несколько дней царицу нашли мертвой – она лежала на ложе в царском уборе, с диадемой на голове. По легенде, она покончила самоубийством с помощью ядовитой змеи.