Успех предприятия для Антония становился все более сомнительным, и некоторые союзники начали отпадать от него. В его армии начались лишения, болезни, дезертирство. К весне 31 года до н. э. с кораблей Антония дезертировало около трети личного состава. В то же время Октавиан за зиму собрал армию в восемьдесят тысяч пехотинцев и двенадцать тысяч кавалерии. Его полководец Агриппа снарядил флот из двухсот шестидесяти либурн[3], снабдив корабли различными новыми приспособлениями для метания зажигательных составов. Он стал захватывать транспорты противника, которые доставляли провиант и боеприпасы. Во время этих набегов Агриппа получил точные сведения о состоянии и расположении армии Антония. Всего в Греции у Антония имелось сто тысяч пехоты, двенадцать тысяч кавалерии и около трехсот семидесяти судов.
Флот Марка Антония и Клеопатры, на первый взгляд, значительно превосходил в боевой мощи флот Октавиана. В большинстве своем это были огромные мощные корабли с сильным тараном и деревянным бронированным поясом, часто обшитым медью для защиты от таранных ударов. Высота борта в середине корабля доходила до трех метров и увеличивалась от носа и кормы так, чтобы их было сложно взять на абордаж. На палубе стояли тяжелые метательные машины и башни для навесного метания снарядов. Однако корабли такой конструкции были тихоходны и неповоротливы, их наступательная сила заключалась главным образом в зажигательных и метательных снарядах. Действие последних было направлено не столько против кораблей, сколько против экипажей. На корабли Антоний посадил двадцать пять тысяч солдат, не считая экипажей. Часть кораблей египетских союзников Антоний велел сжечь, чтобы высвободить судовые команды для своих плавающих крепостей, поскольку дезертирство и болезни урезали личный состав его флота едва ли не наполовину Агриппа уговорил Октавиана, несмотря на меньшую численность армии и флота, перейти в наступление. Внезапное появление военных сил Октавиана произвело сильное впечатление на противника. Антоний переправил свою армию к мысу Акций, но напасть не решился. Октавиан также не двигался, надеясь на дальнейшее разложение армии Антония. К тому же с каждым днем уходило благоприятное время для крупной десантной операции в Италию. Кроме того, Агриппа, не теряя времени, овладел островом Левкадией и городами Патрасом и Коринфом, разбив при этом коринфский флот и лишив Антония подвоза продовольствия. Положение армии Антония становилось критическим.
2 сентября 31 года до н. э. Антоний вывел из залива и выстроил флот таким образом, что его фланги почти примыкали к берегам, а за спиной находился вход в Амбракийский залив, по берегам которого стояла его сухопутная армия. План Антония, по сообщениям историков, состоял в том, чтобы, отказавшись от маневров, держать свои корабли в тесно сомкнутом строю и ждать атаки противника, который, по его предположению, не мог ничего сделать против тяжелых кораблей. Клеопатра со своими кораблями стояла наготове в центре. Агриппа двигался навстречу боевой линии Антония в дугообразном строю, пытаясь охватить фланги противника.
Корабли Антония были недосягаемы для либурн, а либурны легко избегали неповоротливых монстров. Пользуясь пассивностью Антония, Агриппа с помощью согласованных маневров своего флота сумел выманить левый и правый фланги Антония вперед, в результате чего строй последнего нарушился. Тогда Агриппа внезапно атаковал вражеский флот – его быстрые либурны охватывали плавучие крепости Антония со всех сторон. Защищенные броневым поясом корабли Антония не боялись таранных ударов, а от абордажа их спасали высокие борта и солдаты на борту. Подобно битвам Нового времени, на первом этапе бой свелся к перестрелке. Такая борьба, по словам Плутарха, больше напоминала бой у крепостных стен, чем морскую битву. Быстроходные либурны нападали по трое-четверо на большие корабли Антония, но долгое время исход боя был совершенно неясен.
Но именно в этот момент произошло то, чего никто не ожидал. Клеопатра, вместо того чтобы ввести в бой шестьдесят своих легких быстроходных кораблей, способных успешно бороться с подобными же кораблями Агриппы, повернула на юг и вышла из боя с попутным ветром. Марк Антоний, узнав об этом, перешел с флагманского корабля на самое быстроходное судно и догнал царицу. Но и после бегства главнокомандующих битва продолжалась еще несколько часов. Флот Антония, даже лишившись единого командования, продолжал отчаянное сопротивление. Некоторые корабли сбрасывали тяжелые метательные машины за борт, пытаясь уйти, но основные силы держались до конца. Агриппа применил в массовом количестве зажигательные снаряды, и лишь немногим кораблям Антония удалось попасть обратно в залив – но только для того, чтобы потом сдаться победившему Октавиану.