За смертью Гасдрубала и разгромом его армии в битве при Метавре в 207 году до н. э. последовала блестящая победа Сципиона в битве при Илипе весной 206 года до н. э., когда была уничтожена последняя главная карфагенская сила в Испании; было убито 60 тысяч карфагенян, а 6000 взято в плен.[542] Большую часть лета Сципион занимался очисткой территории и наказанием племен, предавших Рим после смерти братьев Сципионов, а затем вернулся в Рим, где был избран консулом на 205 год до н. э. Сенат утвердил Бруттий и Сицилию консульскими провинциями. Лициний Красс отправился в Бруттий удерживать Ганнибала «в клетке», а Сципион получил назначение на Сицилию, где собрал необходимые силы для вторжения в Африку.
Магон, брат Ганнибала и последний карфагенский командующий в Испании, собрал армию на острове Менорка и летом 205 года до н. э. отплыл в Лигурию с армией из 12 тысяч пеших и 2000 конных воинов в сопровождении 30 боевых кораблей.[543] Он захватил Геную и начал набирать в армию лигурийские племена. Такой поворот событий создал угрозу на севере, и римляне укрепили легионы в Цизальпинской Галлии, чтобы воспрепятствовать наступлению Магона на юг. На следующий год Магон получил подкрепление из Карфагена: 6000 пеших воинов, 800 всадников, 7 слонов и 25 боевых кораблей.[544] Шесть римских легионов на два года задержали наступление Магона, но в 203 году до н. э. он решил рискнуть, вступив в бой, но потерпел поражение и потерял 5000 человек. Сам Магон был ранен; «он упал с пробитым бедром, и его, истекающего кровью, вынесли из битвы».[545] Он умер спустя несколько недель на борту корабля, направлявшегося в Карфаген.
Весной 204 года до н. э. армия Сципиона, 31 тысяча пеших и 1200 конных воинов, погрузилась на 400 грузовых кораблей и в сопровождении 40 боевых кораблей отплыла с Сицилии и высадилась на западном побережье Африки в 16 милях к северо-востоку от Утики.[546] На протяжении следующих двух лет Сципион провел множество сражений против карфагенян, в том числе у башни Агафокла (204 год до н. э.), на Великих равнинах (203 год до н. э.), а в 203 году до н. э. устроил поджог зимнего лагеря карфагенян, когда, по словам Ливия, «перебито было и погибло в огне около сорока тысяч человек, пленено больше пяти тысяч, в том числе много знатных карфагенян, и одиннадцать сенаторов».[547] Не менее важен был захват Сифакса, нумидийского царя и бывшего союзника римлян, чья мощная конница была важной составляющей боеспособности карфагенян. Столь же важен был союз Сципиона с Масиниссой, соперником нумидийского короля, который обеспечивал Сципиона всадниками. Поражение карфагенской армии на Великих равнинах и захват Сифакса заставили карфагенский сенат отозвать Магона (он умер в пути) и Ганнибала из Италии. Кроме того, сенат отправил в лагерь Сципиона посольство с просьбой о мире.
Сципион предложил следующие условия: возвратить пленных, перебежчиков и рабов; вывести карфагенские войска из Италии и Галлии, отказаться от Испании, удалиться со всех островов между Италией и Африкой; выдать все военные корабли, кроме двадцати; заплатить контрибуцию в размере 5000 талантов. Эти условия были направлены не на разрушение Карфагена, а низведение его до уровня обычного государства, не имеющего возможности вести войну вне Африки. Сенат принял эти условия и подписал перемирие со Сципионом. Другое посольство отправилось в Рим, чтобы римский сенат утвердил эти условия. Впервые за шестнадцать лет Рим и Карфаген устроили передышку от войны.
Карфагенские послы прибыли в Рим весной 203 года до н. э. и умоляли римский сенат утвердить условия договора, согласованные со Сципионом. Сенат медлил с принятием решения. Главное препятствие, сообщает Дион Кассий, заключалось в том, что консервативная фракция отказывалась принимать любой мир до тех пор, пока Ганнибал и его армия находятся на италийской земле.[548] Ганнибала отозвали сразу же после поражения на Великих равнинах, но он, видимо, сознательно не предпринимал никаких действий, чтобы покинуть Италию, либо у него не хватало кораблей. Если он намеренно тянул с отплытием, то, возможно, чтобы повлиять на переговоры и обеспечить более благоприятные условия для Карфагена.[549] Ганнибал понимал, что армия Сципиона слишком малочисленна, чтобы могла сама завоевать Карфаген и его империю. Вероятно, он пришел к выводу, что, несмотря на захват Сифакса и победы Сципиона, тот добился не слишком многого. После прибытия в Африку Ганнибал, похоже, не слишком спешил вступать в бой со Сципионом.
Ганнибал покинул Италию осенью 203 года до н. э., когда собрал достаточное количество кораблей для транспортировки своей армии.[550] Фуллер говорит, что перед отплытием из Италии Ганнибал убил большую часть своих лошадей не только для того, чтобы они не достались римлянам, но и, возможно, по той причине, что у него не хватало кораблей для перевозки такого количества животных.[551] Если это так, то тогда понятно, почему он прибыл в Африку с такой малочисленной конницей. Ганнибал взял с собой в Африку только тех солдат, которые обладали необходимыми боевыми качествами, а остальных оставил в Италии и распределил по городам Бруттия, якобы для несения гарнизонной службы. Ганнибал впал в глубокое уныние.
«Редко изгнанник покидал родину в такой печали, в какой, как рассказывают, Ганнибал оставлял землю врагов; он часто оглядывался на берега Италии, обвиняя богов и людей, проклиная себя и собственную свою голову за то, что после победы при Каннах не повел на Рим своих воинов, залитых кровью врага… Так, обвиняя и жалуясь, покинул Италию Ганнибал после стольких лет».[552]
Корабли пристали в Малом Лептисе, Ганнибал выгрузил армию и двинулся в Гадрумет. В этой плодородной местности Ганнибал мог обеспечить продовольствием свою армию. Здесь он мог собрать и обучить новую армию, чтобы попытаться избежать обычного для карфагенских полководцев наказания за поражение — распятия на кресте. Кроме того, он перекрыл подходы к Карфагену с юго-востока на тот случай, если Сципион попытается выступить против города. Армия Магона еще раньше отплыла из Северной Италии и уже находилась в Африке, когда Ганнибал высадился в Малом Лептисе.
В Африке сохранялось перемирие, пока в Риме обсуждались условия мирного договора, и римляне использовали это время для пополнения запасов полевых армий. Весной Сципиону дважды направляли транспортные корабли с продовольствием. В первом случае все прошло гладко. А вот второй конвой из двухсот транспортных судов в сопровождении тридцати боевых кораблей попал в шторм у побережья Африки, и большую часть транспортных судов отнесло к острову Эгимур (современное название Зембра), «это остров милях в тридцати от Карфагена у входа в залив, на котором стоит этот город».[553] Команды бросили и груз. Карфаген страдал от нехватки продовольствия, поскольку в него стекались люди из сельской местности, стремящиеся укрыться за городскими стенами. Из Карфагена были видны корабли, выброшенные на берег.
Прибытие Ганнибала в Африку подняло боевой дух карфагенян и оживило надежды военной партии в карфагенском сенате. В карфагенском сенате взяли верх сторонники продолжения войны, и это в то время, когда «послы еще не вернулись из Рима, неизвестно было решение сената: воевать или заключать мир».[554] Народ требовал не выпускать из рук такую добычу, и сенат отправил Гасдрубала с 50 кораблями собрать выброшенные на берег римские суда.[555] Тем временем римские корабли перехватили корабль с карфагенскими послами, возвращавшимися из Рима с известием, что Рим принял условия мирного договора. Послов привели к Сципиону. Он ознакомился с решением римского сената и позволил послам вернуться в Карфаген и сообщить карфагенскому сенату о решении Рима.
Узнав, как карфагеняне обошлись с римскими судами, Сципион, возмущенный бесцеремонным нарушением соглашения, которого сами же карфагеняне так настойчиво добивались, отправил в Карфаген своих послов, чтобы предупредить, что захват груза нарушит перемирие. Кроме того, добавил он, если карфагеняне не вернут даже часть груза, то это тоже нарушит перемирие. Сципион давал карфагенянам возможность решить вопрос дипломатическим путем. Они могли вернуть захваченные корабли с грузом, и вопрос был бы исчерпан. Послы Сципиона открыто изложили его предложения, но сенат отклонил их без объяснения, вероятно, под давлением военной партии. Полибий сообщает, что военная партия хотела продолжить войну и только искала повод, чтобы нарушить перемирие. На римский корабль, на котором возвращались послы, внезапно напали три карфагенских корабля.[556] Ударить носом быстро ускользавший корабль вражеские корабли не смогли. К тому же римляне превосходно защищались. Римским послам удалось благополучно высадиться на берег, но были убиты многие члены команды.[557] Этот отвратительный случай нарушил перемирие.