Амбракийский залив имеет 18,5 морских миль в длину и до 10 миль в ширину, причем, по всей его длине глубина воды достаточна для больших кораблей; вход в залив, однако, узкий, извилистый и мелководный. Для лучшей защиты входа были построены башни, на которых стояли тяжелые метательные машины. В середине залива в полной безопасности стоял флот Антония, тем временем как флот Агриппы находился в двух открытых бухтах перед входом в залив, что было опасным местом для стоянки кораблей.
На мысе Акциум при входе в Амбракийский залив стояло стотысячное войско Марка Антония, на противоположном берегу пролива также стояли его отряды, с которыми соприкасалась армия Октавиана в 75 тысяч человек.
Оба флота были разделены на три эскадры для удобства управления. Антоний вывел из залива и выстроил флот таким образом, что фланги почти примыкали к берегам, а за спиной находился вход в залив. План Антония, по сообщениям историков, состоял в том, чтобы, отказавшись от маневров, держать свои корабли в тесно сомкнутом строю и ждать атаки противника, который по его предположению не мог ничего сделать против тяжелых кораблей. Клеопатра со своими кораблями стояла наготове в центре. Агриппа двигался навстречу боевой линии Антония в дугообразном строю, пытаясь охватить фланги противника.
Корабли Антония были недосягаемы для либурн, а либурны легко избегали неповоротливых монстров. Пользуясь пассивностью Антония, Агриппа с помощью согласованных маневров своего флота сумел выманить левый и правый фланги Антония вперед, в результате чего строй последнего нарушился. Тогда Агриппа внезапно атаковал вражеский флот — его быстрые либурны охватывали плавучие крепости Антония со всех сторон. Защищенные броневым поясом корабли Антония не боялись таранных ударов, а от абордажа спасали их высокие борта и солдаты на борту. Подобно битвам Нового времени на первом этапе бой свёлся к перестрелке. Плутарх так описывает сражение:
«Наконец завязался ближний бой, но ни ударов тараном, ни пробоин не было, потому что грузные корабли Антония не могли набрать разгон, от которого главным образом и зависит сила тарана, а суда Цезаря [Октавиана] не только избегали лобовых столкновений, страшась непробиваемой медной обшивки носа, но не решались бить и в борта, ибо таран разламывался в куски, натыкаясь на толстые, четырёхгранные балки кузова, связанные железными скобами. Борьба походила на сухопутный бой или, говоря точнее, на бой у крепостных стен. Три, а не то и четыре судна разом налетали на один неприятельский корабль, и в дело шли осадные навесы, метательные копья, рогатины и огнеметы, а с кораблей Антония даже стреляли из катапульт, установленных в деревянных башнях.» Именно в этот момент произошло то, чего никто не ожидал. Клеопатра вместо того, чтобы ввести в бой свои 60 легких кораблей, повернула на юг и вышла из боя с попутным ветром. Марк Антоний, узнав об этом, перешел с флагманского корабля на быстроходную пентеру и догнал царицу. После бегства главнокомандующих битва продолжалась ещё несколько часов. Некоторые корабли сбрасывали тяжелые метательные машины за борт, пытаясь уйти, но основные силы держались до конца. Агриппа применил в массовом количестве зажигательные снаряды и лишь немногим кораблям Антония удалось уйти назад в залив, лишь для того, чтобы потом сдаться победившему Октавиану. Сам Октавиан провел морское сражение в каюте, жестоко страдая от морской болезни.
По преданию Марк Антоний просидел в прострации четверо суток на носу судна. Только в Пелопоннесе он разделил ложе с Клеопатрой. На берегу Антоний начал рассылать приказы войскам, но было слишком поздно.
Сухопутная армия держалась ещё семь дней. Несмотря на уже очевидный факт побега, воины продолжали верить, что Марк Антоний вернется и поведет их в бой. Все окончилось только после того, как армию покинул её командующий, Канидий Красс. Тогда 19 легионов Антония влились в армию Октавиана.
Современные исследователи пытаются рационально объяснить поведение Марка Антония и Клеопатры в этом сражении, поскольку понятно, что большая часть сведений о битве принадлежит сторонникам победившего Октавиана Августа, и именно они сформировали такой непривлекательный образ предателя, кинувшего верное войско из-за любовницы. Выдвигалась версия, что Марк Антоний и Клеопатра с самого начала планировали вывести только часть флота, поскольку в Египте их ждали свежие легионы. Другая версия состоит в том, что после того, как нарушился строй, корабли левого фланга вернулись в залив, а правого не смогли этого сделать из-за кораблей Клеопатры и сдались. Поняв, что битва проиграна, Клеопатра прорвалась со своими кораблями, а Марк Антоний отправился за ней. То, что солдаты армии Марка Антония не страдали от преследований (кроме азиатских союзников, в частности Адиаторикса) и получили почти все привилегии, которыми наделялись солдаты Октавиана, а также то, что в армии нового императора были сохранены номера легионов, ранее принадлежавших Антонию, иногда считают следствием предварительных договоренностей с солдатами.