После того как Манцин передал начальство над флотом своему преемнику Серрану и возвратился в Рим, Сципион отправился в лагерь Пизона, чтобы принять от него войско и вести его к Карфагену. В его отсутствие Газдрубал и Битиас, нумидийский вождь, перешедший на сторону карфагенян, приблизили свой лагерь к самому городу и возобновили нападение на войско, занимавшее скалу близ Мегалии; но консул опять явился вовремя со своими передовыми отрядами и спас войско от угрожавшей ему опасности. С этого времени началась серьезная и настойчивая осада. Прежде всего консул с неумолимой строгостью восстановил упавшую дисциплину. Затем во время ночного нападения он овладел предместьем Мегалией, вследствие чего карфагеняне были вынуждены снять свой лагерь, стоявший перед городом, и передать Газдрубалу главное начальство над 30-тысячным городским гарнизоном. Новый комендант варварски выместил свое поражение на военнопленных римлянах; он велел жестоко изувечить их на городской стене, на глазах у римлян, и затем бросить в пропасть. Этой жестокостью он хотел отнять у нерешительного народа всякую возможность капитуляции и принудить его защищаться до последних сил; но так как народ сделался теперь еще малодушнее и порицания стали слышаться как от высших, так и от низших, то Газдрубал старался упрочить свою власть кровавым террором и устранял сенаторов, пытавшихся противодействовать его самовластным распоряжениям.
Сципион старался между тем прекратить всякое сообщение с осажденным городом. Он укрепился на перешейке, соединявшем Карфаген с материком, и в течение 20 дней при упорных схватках перегородил этот перешеек по всей его ширине земляными окопами. Но с моря еще возможен был подвоз припасов для осажденных. Битиас, проехав по всей стране со своими нумидийскими всадниками, доставил массу зернового хлеба в Неферис и оттуда переслал его в столицу через залив, в то время как римский флот из-за встречного ветра не имел возможности задержать или преследовать его корабли. Некоторые смелые купцы, привлекаемые барышами, также пользовались удобным случаем и храбро пробирались мимо римского флота, доставляя свой груз в карфагенский порт. Чтобы преградить доступ к Карфагену с моря, Сципион предпринял исполинское дело. Начиная от южного мыса, он начал строить на море, у входа в порт, большую каменную плотину в 96 футов шириной в основании. Карфагеняне сначала смеялись над безрассудным предприятием; но когда увидели, что оно идет весьма успешно, тогда и сами, соперничая с осаждающими, начали день и ночь работать в своем военном порту, и римляне не знали, что они делают. Они тайно строили флот, и так как вход в гавань с юга был заперт, рыли канал на восток в открытое море. После двухмесячной усиленной работы, однажды утром, к великому изумлению римлян, вдруг вышел в открытое море флот из 120 кораблей, среди которых было 50 трирем. Если бы карфагеняне тотчас же напали на не подготовленные к этому римские корабли, то, вероятно, уничтожили бы весь флот но они удовольствовались тем, что торжественно показал неприятелю всю гордую силу и снова ушли в гавань. Когда на третий день они возвратились, чтобы дать морское сражение, они нашли римлян уже готовыми к бою. Сражение продолжалось до вечера без решительного исхода; но при возвращении в гавань маленькие карфагенские суда так перепутались, что загородили вход, и большие корабли не могли пройти туда. Потому римляне на следующее утро возобновили сражение, загнали карфагенян в гавань и с этот времени стали строго наблюдать за входом в нее.
Сципион начал теперь свою атаку с мыса и воздвигнутой им каменной плотины против внешней плотины порта и защищавших его укреплений. Его сильные машины, действуя днем и ночью, пробили брешь; но карфагеняне в темную ночь перешли вброд, совершили отчаянно-смелое нападение на осадные машины, зажгли их и обратили осаждавших в такое сильное бегство, что Сципион приказал своей собственной коннице врубиться в их ряды, чтобы заставить их остановиться. Карфагеняне победоносно возвратились за свои стены, захватив множество пленных и знамен, и заделали брешь. Сципион снова выставил свои машины, зажег деревянные башни карфагенян и наконец овладел внешней частью порта. Таким образом он подвинулся до самой городской стены, против которой велел насыпать вал одинаковой с ней высоты.