Ганнибал, высадившийся в городе Лептис, первым делом занялся привлечением новых наемников в свое войско. Его успехи в этом деле и само его прибытие пробудили в карфагенянах надежды и дерзость. Карфагенские старейшины не утвердили условий мира, предлагавшихся Сципионом. Пунийцы нагло нарушили перемирие, захватив и разграбив римское торговое судно, и даже напали на римское посольство, направленное в Карфаген, чтобы напомнить о договоре. У Сципиона были все основания для возобновления военных действий.
Он выступил в юго-западном направлении на встречу с Масиниссой, который должен был доставить ему подкрепления из отдаленных районов Нумидии. Чтобы воспрепятствовать соединению Сципиона с Масиниссой, Ганнибал также покинул свой лагерь в городе Гадрумете, где собирал войска, и пошел по направлению к Заме – местечку, расположенному в пяти днях пути от Карфагена. Противники сблизились и встали в нескольких километрах друг от друга. Посланные Ганнибалом разведчики попали в руки римских сторожевых постов. Когда их доставили к Сципиону, он распорядился провести их по римскому лагерю, показать им все, что они пожелают, а затем дал им провожатых и отправил к Ганнибалу. Этот поступок ясно показал Ганнибалу, с каким противником он имеет дело. Пораженный великодушием и отвагой римского полководца и узнав, что к нему подоспел Масинисса с 10-тысячным войском, Ганнибал попросил Публия о личной встрече. Встреча состоялась, но ни к чему не привела. Сципиона не разжалобил вид и не убедили слова состарившегося в победах пунийца, который просил о мире.
Вернувшись к своим войскам, оба полководца приказали готовиться к битве. Она должна была определить победителя, которому будет принадлежать власть над всем миром. Ранним утром следующего дня противники построились для боя. Ганнибал поставил свое войско в три линии. Первую составили 12 тысяч лигурийцев, кельтов, балеарцев и мавров. Впереди них Ганнибал разместил 80 боевых слонов, которые должны были привести в беспорядок римский строй. Во второй линии Ганнибал разместил пехоту из ливийцев и карфагенян, а в двухстах метрах позади в третью линию построились ветераны, приплывшие с Ганнибалом из Италии. Конница прикрывала фланги. Римское войско также выстроилось в три линии. Однако Сципион расположил манипулы друг за другом колоннами, а не в шахматном порядке, как обычно. Промежутки между манипулами заполнили легковооруженные пехотинцы, которые своими дротиками должны были отогнать слонов. На флангах была поставлена конница, в которой римляне с приходом 4 тысяч всадников Масиниссы имели перевес.
Сражение начали конные отряды. Карфагенским всадникам удалось, в соответствии с замыслом Ганнибала, путем притворного бегства увлечь за собой неприятельскую конницу и увести ее с поля боя. Затем пунийский вождь двинул в атаку слонов. Но несколько животных, испугавшись оглушительного рева труб, повернули назад. Другие бросились на римскую легкую пехоту, но она отступила в промежутки между легионами и, обстреливая слонов дротиками, оттеснила их за линию фронта. Теперь в дело вступили главные силы – тяжелая пехота. Римлянам удалось потеснить первую линию неприятеля. Однако стоявшие во второй линии граждане Карфагена бились с отчаянным мужеством, и римские гастаты начали понемногу сдавать позиции. Тогда их поддержали дружным натиском бойцы второй римской линии – принципы. Карфагеняне дрогнули и откатились назад. В ярости Ганнибал приказал своим ветеранам выставить вперед копья, чтобы помешать отступавшим смять строй. Часть карфагенян погибла, приняв смерть от своих же товарищей. Другую часть удалось переместить на фланги.
Битва при Заме
Приостановив ненадолго натиск, Сципион перестроил свое войско и ввел в бой свой резерв – триариев. Упорное сражение возобновилось с новой силой. Гордые былыми победами ветераны Ганнибала не желали уступать и держались до последнего издыхания. Но когда их с тыла атаковала римская конница, вернувшаяся после погони за неприятельскими всадниками, ветераны дрогнули, а потом и все карфагенское войско обратилось в бегство и было большей частью истреблено. Сам Ганнибал, видя, что все потеряно, бежал с несколькими всадниками. В плен попало около 10 тысяч врагов. Римляне потеряли немногим больше полутора тысяч солдат. Среди победителей были и те, кто сражался при Каннах 14 лет назад. Теперь они сполна отплатили за свое позорное бегство и гибель боевых товарищей.
При Заме Ганнибал потерпел первое в своей жизни поражение.