Все попытки карфагенян умиротворить агрессора оказались тщетны. Не помог ни смертный приговор Гасдрубалу, на которого попытались свалить вину за начало военных действий, ни безоговорочное принятие всех непростых условий римской стороны. Когда в 149 г. до н. э. римское войско высадилось в Утике, карфагеняне поспешили согласиться на все выдвинутые консулами условия – выдачу 300 заложников из числа городской знати, разоружение города, передачу римлянам всего оружия, метательных машин, военных припасов и материалов. Однако когда агрессор потребовал от пунийцев также разрушить город и выбрать новое место для поселения в 80 стадиях (около 15 км) от морского побережья, правительство и горожане с негодованием единодушно отвергли это условие, приняв мужественное решение защищать родной дом до конца, любой ценой. Чтобы подготовиться к обороне, пунийцы запросили у римлян месячного перемирия якобы для отправки посольства в Рим. И хотя в просьбе им было отказано, римские военачальники не спешили с началом боевых действий, пребывая в уверенности, что безоружный Карфаген падет при первом же натиске. Горожане сполна воспользовались этой передышкой, в считаные недели подготовившись к обороне и длительной осаде – были собраны внушительные запасы продовольствия, восстановлены и укреплены стены и башни, построены новые метательные машины и выковано новое оружие. На защиту города в час смертельной опасности был призван бежавший из-за угрозы смертной казни Гасдрубал, которому удалось собрать в остававшихся подвластными Карфагену областях внушительное войско. Когда римляне подступили наконец к стенам пунийской столицы, их ожидал неприятный сюрприз – город был полностью готов к обороне.
После первых неудачных попыток штурма римлянам пришлось перейти к затяжной осаде, растянувшейся на 149–148 гг. до н. э. Непереносимый африканский зной и заразные болезни косили ряды римских воинов, длительное бездействие отрицательно сказывалось на их дисциплине. Карфагеняне же, напротив, стойко переносили относительно легкую осаду, поскольку римлянам не удалось полностью изолировать город ни с моря, ни с суши. Продолжали успешно действовать пунийский флот и полевая армия, нанося урон врагу и обеспечивая возможность поставки в город необходимого продовольствия и сырья. И без того сложное положение римлян существенно усугубила смерть девяностолетнего Массиниссы, чуть было не лишившая их поддержки нумидийцев. Ситуацию спас пользовавшийся уважением нумидийского царя военный трибун Публий Корнелий Сципион Эмилиан – приемный внук знаменитого победителя Ганнибала Сципиона Африканского. Этот молодой военачальник, успевший не единожды проявить себя во время осады Карфагена, пользовался таким авторитетом, что был призван умиравшим Массиниссой для проведения процедуры раздела власти между тремя его сыновьями. Блестяще справившись с этой нелегкой дипломатической миссией, Сципион Эмилиан смог сохранить поддержку со стороны нумидийских вспомогательных войск.
Заслуги военного трибуна во время осады Карфагена были по достоинству оценены в Риме, где Сципиона Эмилиана избрали консулом на 217 г. до н. э., несмотря на то что по возрасту (ему было около 35 лет) и послужному списку он еще не соответствовал этой должности. На новом витке истории повторялась эпопея победившего Ганнибала Сципиона Африканского. Прибывший в Африку молодой консул смог быстро навести порядок и восстановить строгую дисциплину в войске, изгнав оттуда продажных женщин, торговцев и разного рода сброд. Одновременно ему удалось разгромить полевые отряды пунийцев, действовавшие вне города и грозившие римлянам с тыла. Была возведена система осадных сооружений, что позволило римлянам полностью перерезать пути подвоза к городу продовольствия по суше. Построенная на входе в городскую гавань плотина перекрыла доступ к городу морским путем. Зима 147–146 гг. до н. э. истощила запасы продовольствия в Карфагене, там начался голод, вспыхнули заразные болезни.
Весной 146 г. до н. э. Сципион Эмилиан повел войска на штурм ослабленного осадой города. Вначале римляне, воспользовавшись слабостью карфагенского гарнизона, смогли проникнуть в городскую гавань и захватить примыкавший к ней прибрежный рынок. Сражение продолжилось на стенах и улицах города, где пунийцы оказывали ожесточенное сопротивление, сражаясь за каждую улицу и каждый превращенный в крепость дом. Римлянам приходилось пробивать стены домов либо двигаться по крышам, перебрасывая балки через улицы. Жестокое сражение, во время которого озверевшие воины не брали пленных и не щадили женщин и детей, длилось шесть дней. На седьмой день римляне подошли к укрепленному акрополю Карфагена – Бирсе, где укрылись около 50 тыс. горожан. Осознавая свою обреченность, они стали молить Сципиона о пощаде. Не пожелали сдаться лишь около 900 человек, большинство из которых были римскими перебежчиками. Укрывшись в храме Эскулапа, в последний момент они подожгли здание и предпочли гибель в огне позорной казни.