После длительных дискуссий в сенате Сципиону предложили в одиночку высадиться в Африке, без финансовой поддержки и необходимой армии. Логика сенаторов была проста: раз ты сам настаиваешь на этой авантюре, то сам ее и реализуй. Покоритель Испании получил полномочия и занялся поиском денег на экспедицию. Он продает все, что у него есть, собирает пожертвования и организует прочие поступления. Но где взять войско? Сципион понимает, что в Риме «нет мужчин, все римские граждане воюют, треть уничтожена Ганнибалом». Тогда он решил искать воинов среди неграждан. В армию пошли преступники и рабы, которым обещали свободу, дезертиры и оборванцы, а также ветераны Каннского сражения, изгнанные из Рима и уже десять лет прозябавшие на Сицилии. Из такого контингента Сципион сформировал и подготовил 30-тысячную армию. В качестве кавалерии к нему присоединился отряд нумидийского царя Масиниссы, который не забыл, как его племянник благополучно вернулся из плена. Сципион получил превосходную конницу.
В качестве отличного плацдарма для дальнейшего наступления на Северную Африку он выбрал Сицилию, где можно было заручиться поддержкой местных греческих колонистов, пообещав вернуть все имущество, потерянное ими за время непрекращающейся войны. Под началом полководца находилось около 35 тысяч солдат, 40 боевых кораблей и 400 грузовых судов.
В 202 г. до н. э. Сципион, воспользовавшись кораблями в порту Лилибей, вместе с войском покинул сицилийское побережье и благополучно высадился на побережье Африки. Но первые попытки закрепиться вблизи селения Утика закончились ничем. Сципион вместе со своей армией зазимовал прямо на африканском побережье, не имея рядом хоть какого-нибудь значительного поселения.
Появление римлян в Африке ошеломило правительство и народ Карфагена. Паника заставила крестьян бежать из города и угонять скот. Ворота Карфагена немедленно заперли, а на стенах выставили стражу. Власти открыто возмущались Ганнибалом. Ведь их армия долгие годы воевала за морем, а теперь враг оказался рядом со столицей. Все это время карфагенский флот бездействовал. Никто не перехватывал суда, подвозившие римлянам продовольствие. В Карфагене не хватало моряков, а корабли были в плохом состоянии.
У командующего римскими войсками тоже не все ладилось. Осада Утики затянулась. На ее спасение выдвинулись войска Сифакса и Гасдрубала, сына Гисгона. Римляне отступили в лагерь, устроенный на мысе, выступавшем далеко в море. Здесь было легко обороняться от превосходящих сил противника, насчитывающих около 80 тысяч пехотинцев. Карфагенская армия, ожидая прибытия Ганнибала, не решалась напасть и располагалась в деревянных и тростниковых хижинах. Это позволило римским лазутчикам поджечь лагерь карфагенян. Спасаясь от огня, солдаты попадали на мечи римлян. Войска Карфагена тогда потеряли более тысячи солдат. Гасдрубал и Сифакс позорно бежали в ночь пожара. Им удалось наспех набрать еще одну армию, но и она была разбита, а большинство рекрутов разбежались. Этот разгром заставил многих карфагенских олигархов заговорить о том, что надо заключить с римлянами мир.
Когда Ганнибал прибыл в Африку, он вскоре организовал встречу с римским полководцем. Последовало следующее предложение: карфагеняне покидают Корсику, Сардинию, Сицилию и Испанию в обмен на мирный договор. Однако Сципион отказался принимать такие условия, заявив, что республика и так уже фактически контролирует все эти земли. Он предложил свой вариант соглашения.
Но здесь произошло событие, которое все испортило. Вдохновленная приездом Ганнибала карфагенская элита санкционировала разбойное нападение на римские торговые корабли и тем самым нарушила условия перемирия. Суть события состоит в том, что для снабжения римской армии продовольствием к берегам Африки направлялись два крупных каравана из двухсот кораблей. Разыгрался шторм, и 50 кораблей оказалась возле Карфагена. Оголодавшему населению показалась заманчивой идея воспользоваться содержимым пострадавших судов, хотя все, разумеется, понимали, что этим нарушат условия перемирия с Римом. В конце концов жадность поборола здравомыслие. Несколько военных судов под предводительством Гасдрубала двинулись к пострадавшим от бури римским кораблям, захватили их и привели в карфагенский порт.
Публий Сципион (в свои 32 года) был возмущен таким коварством и выставил неприемлемый ультиматум Карфагену. Теперь и Ганнибал ничего не мог сделать, а ведь была возможность прекратить войну. Кровопролитие стало неизбежно. Судьба двух полководцев должна была решиться в очном противостоянии армий. Сражение между противоборствующими сторонами произошло при Заме 19 октября через два года после высадки римлян в Африке.