Лигурийцы и галлы уже вступили в бой с главным римским строем, «меряясь силами в единоборстве», как и предсказывал Ганнибал. Люди Магона так стойко сражались, что продвижение римлян было остановлено. Триарии устремились в прогалы, исчезнув в движущихся массах, и римляне снова двинулись вперед. Но карфагеняне второй волны не пошли на помощь выдохшимся лигурийцам и галлам. Ганнибал приказал своим формированиям держаться врозь. Когда уцелевшие из первой волны начали отступать, их встретило направленное на них оружие карфагенян. Обезумевшие группы лигурийцев и галлов яростно набросились на карфагенян, которые уничтожили их.
Римский строй двинулся на эту вторую армию Ганнибала, его многочисленных карфагенян. Эти рекруты из самого Карфагена, которыми командовал старый Ганнон, были смяты отступающими людьми Магона. Римский передний строй сокрушил всех его копьеметателей. Легионеры, укрывшись за щитами, обрушили на них удары своих мечей. Их давление усилилось, когда вступили в бой копьеносцы из второго ряда. Карфагеняне отчаянно сражались, сдерживая опытные легионы. Было уже позднее утро, когда карфагеняне отступили, отойдя в стороны. Они оставили поле боя, усеянное ранеными и погибшими.
За мертвыми стоял последний строй Ганнибала, ветераны Италии.
Их темные ряды были нетронутыми, выжидающими. Ганнибал держал обособленно свою великую ударную силу в эти ранние часы. Теряющие силы легионеры встретились лицом к лицу с ветеранами, которые до этого момента одерживали над ними победу.
Сципион не мог отступать. Звуки труб доносились из конца в конец легионов. Легаты с безрассудной смелостью поскакали к трибунам, и возгласы центурионов перекрывали стоны раненых. Приказы донеслись до людей в строю: отдохнуть, вернуть себе оружие, унести раненых римлян, очистить поле боя, не оставлять знамен. Сципион не спускал глаз с «итальянской» армии, которая находилась на расстоянии трехсот шагов. На обоих флангах этой армии беглецы из имевших место ранее сражений были собраны, чтобы занять места, освобожденные карфагенской конницей. В этой быстрой перегруппировке Сципион почувствовал Ганнибала в действии. Все еще не было никаких признаков того, что римская кавалерия возвращалась на поле брани.
Сципион подождал, пока его легионеры не обрели второе дыхание и свое оружие и не получили воды. Тогда он снова отдал приказ. Три линии легионов перестроились: копьеносцы, которые поддерживали пострадавший передний строй, перешли на один фланг, триарии — на другой. Строй римлян удлинился, выйдя за пределы боевого порядка Ганнибала. После этого он снова двинулся вперед.
Сципион отважно атаковал свежую армию Ганнибала, бросив на нее равные силы своих усталых воинов, стоящих в длинной тонкой линии, которая сходилась на слабых вражеских флангах. Делая это, он испытывал стойкость духа своих людей и находчивость Лелия и Масиниссы.
Так началось последнее сражение. Что могло случиться при встрече бруттийцев Ганнибала с легионами, никогда не станет известно, потому что римская конница вернулась. Подчиняясь приказам Лелия и Масиниссы, она приблизилась со стороны тыла ветеранов Ганнибала. Бруттийцы отважно противостояли на флангах перекрестной атаке римской пехоты. Теперь их задние ряды должны были развернуться, чтобы встретить надвигающуюся с топотом конницу. Они сражались бесшумно, непокоренные. Больше не оставалось никаких надежд. Не осталось карфагенской конницы, которая могла бы справиться с римлянами. Сципион торжествовал победу, не уступающую Каннам.
Окруженные ветераны не смогли уйти от конницы. Они сражались до тех пор, пока большинство из них не погибло.
Когда образовался проход, Ганнибал и несколько всадников умчались прочь. Они не направились в почти опустевший карфагенский лагерь. Там не оставалось никаких значительных формирований, чтобы защищать их, потому что Ганнибал бросил все свои силы на битву в долине. (Сципион скажет потом, что Ганнибал сделал все, что было в человеческих силах в битве при Заме.)
Ганнибал скакал, не останавливаясь, на восток, в Хадрумет, который находился в 90 милях отсюда. Там ждали транспортные суда с провизией и небольшим гарнизоном. Совершив побег, он спас тем самым свой город от унижения в случае своего захвата. У него не было никаких иллюзий по поводу продолжения войны. В предзакатные часы того дня, когда произошла битва при Заме, он потерял армию, которой командовал шестнадцать лет. Попытка защитить сам город без армии могла только стать причиной осады, которая закончилась бы голодом.
Из Хадрумета Ганнибал отправил предупреждение людям, которые находились в черте города: «Мы проиграли больше чем битву — мы проиграли войну. Соглашайтесь с теми условиями, которые вам предложат».