Сципион построил свое войско по традиционному образцу римского легиона. Впереди стояли гастаты – вооруженные каждый двумя 1,2-метровыми дротиками и коротким мечом. За ними следовали принципы, которые имели похожее вооружение (только вместо дротиков у них были обыкновенные копья). Третьими стояли наиболее опытные ветераны римского войска – триарии, которые несли овальный бронзовый щит, шлем, бронзовый панцирь либо кольчугу. При этом надо помнить, что в Риме существовала всеобщая воинская повинность. В армии служили с 17 до 45 лет в полевых частях, с 45 до 60 лет – в крепостях. От службы освобождались лица, участвовавшие в 20 кампаниях в пехоте и в 10 в кавалерии. Римское войско составляли легионы (от 2 до 10 тысяч воинов), которые подразделялись на 30 манипул, каждая из которых имела две центурии по 100 человек.
Атака слонов Ганнибала в битве при Заме
Свои когорты (960 воинов) Сципион выстроил не в одну сплошную линию, а так, чтобы между подразделениями оставались широкие промежутки, по которым карфагенские слоны могли бы пройти, не расстраивая боевого порядка. Гая Лелия, своего легата (командующего легионом) он поместил с италийской конницей на левом фланге, а на правом карфагенянам противостояли Массинисса и его конница. В проходах между манипулами Сципион поставил легковооруженных копейщиков, приказав им при нападении слонов атаковать либо укрыться за выстроенными рядами солдат.
В это время Ганнибал, рассчитывая внушить римлянам страх, впереди поставил 80 слонов. Такого количества слонов он никогда не выводил в бой. За слонами он поставил вспомогательные отряды лигурийцев и галлов вместе с балеарцами и маврами; во втором ряду стояли карфагеняне, африканцы и легион македонян. Фланги он усилил конницей: справа – карфагенской, слева – остатками нумидийской.
Когда Ганнибал держал речь перед войсками, мотивируя воинов обещаниями повысить им жалование и напоминая про защиту родины, со стороны римлян раздались звуки труб и рогов. Поднялся такой крик, что слоны повернули на своих – на мавров и нумидийцев, стоявших на левом фланге. Наконец слонов удалось погнать на врага. Идя сквозь ряды копейщиков, израненные, они крушили все вокруг. Копейщики отошли к манипулам и дали дорогу слонам. Солдаты не переставая метали в слонов дротики, пока животных наконец не повернули назад, расстроив карфагенскую тяжелую кавалерию.
Затем сильная нумидийская конница Масиниссы обратила в бегство карфагенскую кавалерию, а вернувшись в бой, ударила в тыл карфагенской пехоты. Ганнибал проиграл сражение. На поле битвы при Заме полегло большинство карфагенских воинов. Те, которые бежали, были растоптаны неприятельской конницей или взяты в плен. По сообщению Тита Ливия, в этом бою погибло 11 слонов, 20 тысяч карфагенян и их союзников, около 10 тысяч попало в плен. Если судить по явно заниженным данным историка Полибия, то римляне потеряли чуть более полутора тысяч человек.
Вечером Ганнибал с несколькими всадниками ускакал в Гадрумет, преодолев 130 км одним разом. После неудачных попыток собрать остатки войска он поехал в Карфаген и сообщил, что битва при Заме проиграна. Проиграна была Вторая Пуническая война. В Карфагене даже после поражения никто не подвергал сомнению лидерство Ганнибала. Поэтому на него свалилась вся тяжесть ведения переговоров о мире. А римляне в лице прибывшего сената из 30 человек не знали жалости. По условиям мирного договора Карфаген сохранял свободу и свою территорию в Африке в тех пределах, какие существовали до войны. При этом он должен был выдать римлянам всех перебежчиков, беглых рабов и военнопленных, все боевые корабли и всех прирученных слонов. Карфаген был обязан вернуть Масиниссе его имущество и владения в тех пределах, которые он им укажет. Карфаген должен был содержать римские войска в Африке, выплатить огромную контрибуцию, полностью освободить Испанию и все острова между Италией и Африкой.
Благодаря благородству Сципиона повергнутый Ганнибал смог остаться на свободе, хотя римский сенат еще 17 лет требовал выдачи его как зачинщика войны. Ганнибал оставался в Карфагене, в котором у него было много врагов, но и почитателей. Враги пытались привлечь его к суду за то, что он не сумел взять Рим, а огромную добычу, захваченную в Италии, использовал как зарплату солдатам. И все же в 196 г. до н. э. его избрали на должность суффета – верховного судьи Карфагена, где он хотел реализовать ряд прогрессивных реформ в судопроизводстве. Благодаря поддержке Народного собрания Ганнибал проводит закон, по которому Совет ста четырех должен обновляться ежегодно. Этот закон подрывал сам олигархический строй республики. Тетерь в обновленный совет Ганнибал мог провести сколько угодно своих сторонников. Главным органом управления страны становилось Народное собрание. Реформа была нацелена против олигархов с целью лишить сенат реальной власти. Эта реформа была важной внутриполитической победой Ганнибала.