В 208 г. до н. э. Сципион разбил карфагенскую армию у Бекулы. Потом в 206 г., хотя и уступая в численности, он снова одержал решающую победу при Илипе. Оттянув назад слабый центр, римляне двинули вперед расположенные на флангах самые сильные легионы. Те разбили испанских рекрутов на карфагенских флангах еще до начала действий в центре, а затем повернули внутрь, решив исход сражения. Сципион преследовал войска противника до моря, где тот сдался. В 205 г., когда Испания была полностью очищена от карфагенян, Сципион вернулся в Рим.
Карфаген теперь потерял Испанию, Сицилию и Сардинию, и Ганнибал был отрезан в нижней Италии. Римский сенат намеревался задушить его армию на месте. Но Сципион предложил другую стратегию. Он выступал за то, чтобы удерживать Ганнибала на юге Италии и в это время ударить по Карфагену в Северной Африке. Сенат не проявил такого желания, но Сципион принялся набирать, организовывать и обучать свою армию. В 204 г. он высадился в Африке. С ним были 25 тысяч воинов и поддержка нумидийского царя Масиниссы, который мог предоставить ему первоклассную конницу. Ему противостояла карфагенская армия из 20 тысяч пеших, 6 тысяч конных воинов и 140 слонов.
Весной 203 г. после четырехдневного броска Сципион с одним легионом и некоторым количеством конницы настиг противника на Баградской равнине и разбил его, применив совсем не римскую тактику – решительно атаковав конницей оба фланга. Карфаген запросил мира и отозвал Ганнибала. Но когда тот летом 203 г. высадился в Африке с 15 тысячами бойцов, карфагеняне в конечном счете решили продолжать борьбу. В следующем году Сципион опустошил богатую Баградскую равнину, а осенью был встречен армией Ганнибала у Замы, в пяти днях пути к юго-западу от Карфагена. При Заме в 202 г. до н. э. состоялась последняя битва Второй Пунической войны. Обе армии насчитывали примерно по 40 тысяч человек. Силы Ганнибала, возможно, были несколько многочисленнее, но большая часть пехоты Сципиона была лучше обучена, к тому же у него было преимущество в коннице – более 4 тысяч всадников против 2 тысяч у Ганнибала.
Впервые за всю карьеру у Ганнибала не было превосходства в коннице, а это означало, что он не мог прибегнуть к тактике охвата с флангов, которая оказалась такой успешной при Каннах. Впереди своего войска он поставил 80 слонов. Пехота выстроилась в три эшелона. Первый состоял из лигурийской и галльской тяжелой пехоты, перемежающейся с мавританской легкой пехотой и балеарскими пращеметателями. Во второй эшелон он поставил части, на которые меньше всего полагался, – карфагенских и африканских новобранцев. Третий эшелон, состоявший из вернувшейся из Италии его собственной испытанной пехоты, держался в 200 ярдах позади второго, с тем чтобы не быть вовлеченным в бой, пока не наступит время решающего удара. Тысячу карфагенских конников Ганнибал поставил на правом фланге и тысячу нумидийцев на левом. Его целью было просто прорвать римский фронт. Многое зависело от слонов.
Сципион видоизменил обычный боевой порядок легиона с учетом наличия слонов у противника и собственного превосходства в коннице. Вместо построения манипул в три эшелона в шахматном порядке, он расположил их колоннами с промежутками для прохода слонов, которыми должны были заняться велиты. Промежутки между эшелонами были больше обычного, особенно далеко назад отодвигались триарии, давая возможность велитам в случае необходимости отступить между их рядами. На правый фланг он поставил основную конную силу – нумидийцев Масиниссы, а на левый – итальянскую конницу под командованием Лелия.
Сражение началось со стычки противостоящих частей нумидийских конников. Затем Ганнибал пустил в атаку слонов. Когда те, тяжело ступая, двинулись на римскую армию, Сципион дал команду по всему фронту трубить в трубы и рога. Внезапный трубный рев напугал слонов. Те, что были слева, повернули и врезались в ряды нумидийцев Ганнибала. Воспользовавшись замешательством в рядах отборной конницы противника, Масинисса ринулся в атаку и вытеснил нумидийцев с поля боя. В центре образование проходов в строю манипулов принесло плоды, ибо хотя слоны причинили тяжелый урон велитам, большинство слонов прошло сквозь строй римлян, не затронув тяжелую пехоту. Некоторых копьями римской конницы повернули назад в сторону правого фланга карфагенян. Лелий, как и Масинисса, воспользовался замешательством конницы противника и бросил свою конницу на карфагенский правый фланг. Таким образом, конница Ганнибала с самого начала была изгнана с поля боя и его фланги оказались оголенными.
Римская конница далеко отогнала карфагенскую, а тем временем начался второй этап сражения – в бой вступила пехота. Поначалу галлы и лигурийцы Ганнибала благодаря мобильности получили преимущество, но им по существу не удалось нарушить строй римлян, которые, имея преимущество в весе, постепенно начали теснить противника. Когда же в бой вступили принципы, второй эшелон карфагенян не смог удержать фронт, и, когда галлам показалось, что их покинули в беде, они прекратили борьбу и рассеялись, оставив второй эшелон перед лицом римлян. Земля была завалена трупами и стала скользкой от крови. Какое-то время новый карфагенский фронт теснил римских гастатов. Но затем римские командиры навели порядок в рядах принципов, и, располагая более широким фронтом, римляне оттеснили второй эшелон карфагенян и раздробили его на части. Оставшиеся в живых, как и раньше, бросились укрываться за следующим эшелоном, но, как и раньше, Ганнибал не дал свежим дисциплинированным частям смешаться с потерпевшими поражение. Его испытанные триарии направили вперед копья, и остатки второго эшелона карфагенян разбежались в сторону флангов.
Начался третий и самый ожесточенный этап сражения. Римляне уже наголову разбили два эшелона противника и несомненно были окрылены успехом. С другой стороны, за исключением триариев, все они выдержали тяжелый бой, а теперь им предстояло противостоять отборной пехоте Ганнибала, совершенно свежей и сохранившей нетронутыми боевые порядки. Сохраняя в этот момент поразительное хладнокровие, Сципион проверил состояние своих высокодисциплинированных войск. Распорядился перенести раненых в тыл, приказал переместить утомленных гастатов на фланги и перестроил принципов и триариев в единый плотный порядок по более широкому фронту, с тем чтобы выдержать удар атакующих и в то же время охватить противника с флангов. Полибий рассказывает, что после этого «обе стороны яростно набросились друг на друга. Поскольку силы, боевой дух и вооружение были примерно равны, исход сражения долгое время оставался неясным, воины упорно держали строй и падали замертво, не отступив ни на шаг». Некоторое время бой пехотинцев шел на равных. Затем, наконец, вернулась преследовавшая карфагенян конница Масиниссы и Лелия и с тыла ударила по пехоте Ганнибала. «Большинство его воинов погибло в строю, да и из тех, кто пытался бежать, мало кто остался в живых». Битва завершилась. Конница Сципиона закрепила победу и исход войны в целом, прочесав всю сельскую местность. Сам Ганнибал спасся. Сципион не пошел походом на Карфаген, потому что не располагал осадными средствами и к тому же намеревался продиктовать скорее умеренные, чем карательные условия мира.
Не так просто сравнить достоинства и недостатки двух великих полководцев, противостоявших друг другу в сражении при Заме. Ганнибал, возможно, был сильнее в тактике, его тактический талант в битве при Каннах безусловно сравним с руководством любым сражением в истории военного искусства. Армия Ганнибала по боевой подготовке уступала армии Сципиона – значительная часть его пехоты была лишь полуобучена, и он значительно уступал противнику в численности конницы. Ему пришлось рискнуть, использовав слонов, ибо все зависело от того, как они себя поведут. В данном случае они катастрофически его подвели. И тем не менее, даже после этого, придержав до самого конца свою лучшую пехоту и вынудив римскую пехоту потратить силы на его второстепенные войска, он почти выправил положение. Сципион у Замы не допустил ни одной ошибки, а его хладнокровная перестройка войск в разгар боя была мастерским шагом. Но даже при этом исход битвы решили ниспосланное небом в последнюю минуту возвращение конницы и боевые качества римской пехоты. Ганнибал сделал все, что мог, но к 202 г. до н. э. после 16 лет непрерывного руководства войсками, возможно, лучшая его пора миновала.