Вступившей в дело фаланге карфагенян удалось остановить натиск гастатов и расстроить их ряды. Видя, что ситуация начинает выходить из-под контроля, Сципион провел перестроение. По сигналу гастаты отошли назад и восстановили порядок, а на фланги выдвинулись принципы и триарии. Раненые были отнесены за строй. Сражение возобновилось с прежним накалом. Ни Полибий, ни Ливий не говорят, что в бой вступила третья линия пунийской армии, но логика сражения наводит на мысль о том, что Ганнибал в ответ на перестроения римлян мог также удлинить фронт за счет выведения на фланги своих ветеранов и бруттийцев. Карфагеняне, как и римляне, дрались отчаянно, и ни тем ни другим не удавалось переломить ход боя в свою пользу.
Судьба сражения, а вместе с ним и войны решилась, когда из затянувшегося преследования вернулись всадники Масиниссы и Гая Лелия (слова Полибия о том, что они «каким-то чудом вовремя подоспели к делу» (Полибий, XV, 14, 7), создают впечатление, что пунийцы уже начинали брать верх; если так, то Ганнибалу не хватило лишь времени для того, чтобы одержать очередную победу). Их удар в тыл пехоты Ганнибала знаменовал собой ее окончательный разгром (если бы третья линия карфагенян на тот момент не была задействована в рукопашной, атака конницы пришлась бы, скорее всего, на нее и не имела бы таких фатальных последствий; однако без ее поддержки вторая линия вряд ли выдержала бы одновременный натиск гастатов, принципов и триариев). Оказавшиеся в окружении карфагеняне гибли массами, а те, кто пытался спастись, настигались римской и нумидийской конницей. Когда ничего уже сделать было нельзя, Ганнибал вместе с немногими всадниками бежал к Гадрумету, где у него еще могли оставаться войска (Полибий, XV, 12; 13; 14, 1–8; Ливий, ХХХ, 33, 12–16; 34; 35, 1–2).
Несмотря на то что Ганнибал потерпел полное поражение, в битве при Заме он еще раз продемонстрировал свое полководческое искусство, что отмечали потом поколения историков, начиная с Полибия. В самом деле, описание битвы дает основания предполагать, что у пунийского полководца был хоть и рискованный, но реальный план, полностью отвечающий соотношению сил сторон. Главной задачей для него стало нейтрализовать сильно превосходящую неприятельскую конницу, чтобы не оказаться в такой же ситуации, как когда-то римляне под Каннами. Не надеясь опрокинуть, он решил увести ее подальше от поля боя притворным отступлением, что и было сделано. В расчете на это была построена и действовала в ходе боя карфагенская пехота: первая линия приняла на себя наиболее сильный натиск противника, после чего в дело вступили лучшие воины, расположенные во второй и третьей линиях. Однако и Сципион выведением вперед триариев и принципов достиг использования всей мощи армии, что и позволило римской пехоте продержаться необходимое время до подхода конницы. В итоге Ганнибал был разбит, находясь в шаге от победы.
(Совершенно другое описание сражения дает Аппиан, однако в данном случае воспринимать его как заслуживающий доверия источник не представляется возможным. Так, одним из его центральных эпизодов, во многом определивших ход сражения, стали личные поединки Ганнибала – вначале со Сципионом, а потом с Масиниссой, в ходе которых пунийский полководец поразил коней своих противников, а Масинисса получил ранение. Этот сюжет, подходящий для героического эпоса и в принципе способный иметь место в биографии Масиниссы, совершенно нереален, учитывая боевые традиции как римлян, так и карфагенян, и добавляет сомнений при рассмотрении других мест в произведении Аппиана, где трактовка событий отличается от принятой Полибием и Ливием. Аппиан, Ливия, 43–47).
Данные о потерях сторон в источниках заметно различаются. Полибий называет такие цифры: более полутора тысяч убитых римлян (очевидно, нумидийцев он не посчитал), более десяти тысяч погибших и немногим меньшее число пленных карфагенян (Полибий, XV, 14, 9). По Аппиану, погибло две с половиной тысячи римлян, еще больше нумидийцев Масиниссы, двадцать пять тысяч воинов Ганнибала, при этом в плен было захвачено восемь с половиной тысяч пунийцев; кроме того, в ходе битвы на сторону римлян перешли триста иберов и восемьсот нумидийцев (Аппиан, Ливия, 48). Самое несоразмерное соотношение потерь находим у Ливия: более двадцати тысяч убитых пунийцев, столько же взятых в плен, а также в качестве трофеев сто тридцать два знамени и одиннадцать слонов; потери победителей римский историк оценил примерно в полторы тысячи убитыми (Ливий, ХХХ, 35, 3). Но даже если цифры Ливия считать завышенными, итог битвы не оставлял сомнений: карфагенская армия перестала существовать и продолжать борьбу Ганнибалу было не с чем. Приехав из Гадрумета в Карфаген, он объявил в совете, что проиграл не только битву, но и всю войну (Ливий, ХХХ, 35, 10). Теперь он мог надеяться только на мирные переговоры, на организацию которых и направил все свои силы и влияние.
Конец войны