В самом Карфагене власть находилась теперь в руках ярых сторонников демократии во главе с Гасдрубалом. Ему удалось избавиться от своего тезки – внука Масиниссы, который, по его приказу, был убит прямо на собрании совета. Гасдрубал пришел в ярость, узнав о нападении Сципиона, и, чтобы исключить любую возможность компромисса, велел казнить на городских стенах римских пленников. Всех, кого подозревали в слабости или пораженческих настроениях, безжалостно устраняли.
А тем временем Сципион методически готовился к захвату города. Он начал с того, что полностью перекрыл перешеек, построив там обширный, обнесенный рвами лагерь. После этого он приступил к постройке дамбы, которая должна была перегородить вход в гавань, чтобы суда, прорывавшиеся сквозь блокаду, не могли в нее войти, даже при попутном ветре. Тогда осажденные построили другой канал, соединивший их военную гавань непосредственно с морем. Они выслали туда импровизированную военную флотилию, которая сильно потрепала римские суда. Тем не менее Сципиону удалось захватить обширное плато Саламбо, которое располагалось прямо у входа в гавань. Борьба за овладение этим плато продолжалась несколько месяцев. 147 год закончился, не принеся римлянам особых успехов. Зимой Гасдрубал попытался начать переговоры через посредничество Гулуссы. А тем временем Сципиону удалось уничтожить пуническую армию в районе Хангета и полностью подчинить себе ливийских крестьян, многие из которых до сих пор сохраняли верность Карфагену, несмотря на карательные экспедиции кавалерии Гулуссы.
Весной 146 года Сципион собрал все свои силы, собираясь начать штурм Карфагена. Но, прежде чем дать сигнал к выступлению, он торжественно произнес магические заклинания, которые должны были заставить богов, защищавших город, покинуть его и высвободить силы зла, чтобы они накинулись на Карфаген. Карфагеняне тоже обратились за помощью к богам, но они уже больше не приносили им в жертву своих детей, как во времена Агафокла. Богинями, которых они просили о помощи, были все те же Деметра и Кора, привезенные ими из Сиракуз два с половиной века назад. Гончары в керамических мастерских Дермеха работали не покладая рук, чтобы приготовить необходимое число священных сосудов, которые должны были нести во время процессии посвященные. В начале этого века Гоклер обнаружил их совершенно нетронутыми; они стояли в печах, ожидая обжига.
И вот наступило утро (точной даты мы не знаем), когда римляне покинули свои фортификации со стороны доков и начали штурм стен военной гавани. Карфагеняне ослабели от голода и недосыпания и едва могли сопротивляться. Легионеры прошли из гавани к располагавшейся неподалеку агоре, по пути ограбив храм Аполлона (они унесли его золотой шатер). После этого они атаковали Бирсу, продвигаясь по ее узким улочкам, по обеим сторонам которых высились шестиэтажные дома. Эти дома, прежде чем разрушить, надо было сжечь. Цитадель продержалась еще шесть дней, и Сципион даровал жизнь тем 50 тысячам человек, которые нашли в ней убежище. Они закончили свою жизнь в качестве рабов. В Карфагене находилось также 900 дезертиров из римской армии, которые знали, что пощады им не будет. Чтобы избежать распятия, они забаррикадировались в храме Эшмуна, который стоял на холме к северу от Бирсы, на склонах, где позже был обнаружен римский театр. Они подожгли храм и сгорели вместе с ним. Жена Гасдрубала с двумя сыновьями решила последовать их примеру, а сам Гасдрубал бросился к ногам Сципиона, умоляя о пощаде. Жена Гасдрубала осыпала его проклятиями за трусость, а потом бросила в огонь сыновей и последовала за ними сама.