Когда на третий день карфагеняне вновь вывели свои корабли в море, фактор внезапности был утерян и им противостоял уже полностью готовый для битвы римский флот. В последовавшем затем полномасштабном сражении обе стороны дрались с огромным упорством и мужеством, и до конца дня победитель оставался неясен. Наконец, когда уже близился вечер, карфагеняне начали отводить свои корабли в гавань, надеясь продолжить бой на следующий день. Именно этот неудачно выполненный маневр и решил исход битвы. Более легкие и быстроходные суда опередили остальные корабли и, скопившись у входа в гавань, совершенно его загородили, в результате чего большие корабли были вынуждены выстроиться у тянувшегося вдоль берега мола и отражать атаки наседавшего римского флота. Карфагенские суда были лишены возможности маневрировать, но и в таком положении наносили противнику заметный урон, пользуясь тем, что для каждой новой атаки римлянам приходилось отступать, а во время разворота, который они делали перед самым строем пунийцев, их корабли оказывались особенно уязвимы. Однако моряки пяти кораблей из союзной римлянам греческой колонии Сида в Памфилии придумали, как усовершенствовать тактику нападения. Они бросили якоря на некотором расстоянии от неприятельского строя и после очередной атаки просто подтягивали к ним по канату свои корабли, не подставляя под удар борт, а затем вновь атаковали. Вскоре их примеру последовали и римские экипажи, и к наступлению ночи карфагенский флот был окончательно разгромлен. Немногие уцелевшие корабли укрылись в гавани (Аппиан, Ливия, 123; Ливий, Содержание, 51).
На следующий день Сципион предпринял атаку на мол, находившийся рядом с входом в гавань. На нем располагались укрепления, часть из которых римлянам вскоре удалось разрушить, а на самой насыпи установить осадные машины. Но когда наступила ночь, карфагеняне ответили им настолько дерзкой вылазкой, что, рассказывая о ней столетия спустя, Аппиан не скрывал уважения к жителям города. Раздевшись догола, с оружием и незажженными факелами в руках, карфагеняне двинулись к молу по мелководью, откуда их никто не ждал, кто вплавь, кто по шею в воде. Когда они его достигли и зажгли факелы, вспыхнула ожесточенная схватка, в ходе которой осадные машины были уничтожены, а римляне в страхе перед безумной отвагой пунийцев бежали. Паника среди них была такой, что Сципион, лично пытавшийся навести порядок в своей армии, приказал убивать бегущих, и несколько человек действительно поплатились жизнью, пока дисциплина не была восстановлена.
На следующий день карфагеняне починили и усилили оборонительное сооружение на насыпи, но римляне, восстановив осадные машины, вскоре сделали напротив него вал, с которого зажигательными снарядами сильно повредили укрепление пунийцев, а потом и вообще очистили его от врагов. На отвоеванной насыпи римляне построили кирпичную стену не ниже городской стены, и размещенные на ней четыре тысячи солдат подвергали карфагенян непрерывному обстрелу, благо до врага было близко (Аппиан, Ливия, 124–125). Более за все лето 147 г. до н. э. активных действий у города не предпринималось.
В начале зимы 147 г. до н. э. Сципион решил, наконец, покончить со всеми союзниками карфагенян, рассеянными по Ливии, и захватить остальные города. Основные силы были направлены против памятного римлянам двумя позорными отступлениями Нефериса, обороной которого теперь руководил Диоген. Его лагерь неподалеку от города и подвергся непрерывным атакам, которые Сципион поручил Гулуссе. Сам римский военачальник в течение некоторого времени ездил между Неферисом и Карфагеном, следя за обстановкой, а когда часть стены лагеря Диогена была разрушена, Эмилиан уже лично возглавил операцию. Поставив в засаду тысячу отборных бойцов, он бросил в пролом стены несколько отрядов общим числом в три тысячи человек, а когда бой был в разгаре, ввел в действие и засадный отряд, который проник в лагерь со стороны, которую никто не охранял. Разгром карфагенян был полным: по словам Аппиана, они потеряли до семидесяти тысяч убитыми, десяти тысяч пленными, и около четырех тысяч было рассеяно (Аппиан, Ливия, 126). Вскоре после этого в результате двадцатидвухдневной осады был взят Неферис, а затем сдались либо были захвачены и остальные ливийские города (Ливий, Содержание, 51). Карфаген лишился даже теоретической возможности получить помощь со стороны.