Сражение при Заме (202 до н. э.) стало последним эпизодом в долгой драме. Силы Ганнибала, как можно предположить, несколько превышали 50 000 человек, армию Сципиона можно оценить приблизительно в 36 000 человек, в том числе 10 000 составляли нумидийцы. Ганнибал построил пехотинцев в три линии, его ветераны из Италии занимали третью линию и служили резервом. В его армии было 80 слонов, которых он равномерно распределил по всему фронту. Конница располагалась на флангах. Сципион поставил в центре два своих легиона из числа ветеранов (и еще примерно такое же количество италийских союзников), римская конница находилась на левом фланге, а Масинисса со своими нумидийцами на правом. Учитывая наличие у противника 80 слонов, Сципион изменил обычное построение манипул: вместо второй линии,
Боевые действия начались с обычного обстрела легковооруженными воинами, после чего Ганнибал послал вперед своих боевых слонов. Их наступление было встречено ревом
Римская и нумидийская конница воспользовалась сумятицей во вражеских рядах и нанесла удар по флангам Ганнибала, оттесняя их с поля боя. Тем временем пехотинцы обеих армий сошлись, и между первыми линиями закипела схватка. После упорного сражения римляне отбили напор галлов и лигурийцев, составлявших авангард армии Ганнибала. Карфагеняне, стоявшие во второй линии, запоздали двинуться им на помощь, предпочитая сохранить свои ряды в порядке. Наконец галлы и лигурийцы дрогнули и побежали, рассыпаясь по полю боя и огибая свои фланги. Их товарищи во второй линии держали свои копья склоненными, не позволяя дезертирам прорваться сквозь их порядки.
Между гастатами и карфагенянами разгорелся жестокий бой, и свежие карфагенские воины поначалу было потеснили усталых уже гастатов. Но принцепсы оперативно пришли им на помощь, и этот приток свежих сил решил судьбу карфагенян, которые хотя и стойко держались, но все же пали один за другим.
Разделавшись с этими профессионалами, копьеносцы Сципиона, развернувшись, оказались перед ощетинившейся копьями «старой гвардией» Ганнибала, ветеранами его италийской кампании, преданными своему предводителю. Эти закаленные в боях солдаты, численностью примерно 24 000 человек, даже при виде бегущих карфагенян сохраняли нерушимый строй своих рядов. Еще две линии таких же бывалых воинов поддерживали их с тыла и ждали удара приближающихся римлян с холодным спокойствием.
Римлянам предстояло теперь вступить в новое сражение с врагом, превосходящим их на несколько тысяч человек. Из них самих примерно лишь одна пятая прежде бывала в сражениях, тогда как большинство из тех, кто сейчас противостоял им, сражались под Треббией и Каннами и ничуть не уступали лучшим из солдат, которых воспитал Рим. Мы не представляем себе, с какими чувствами смотрели римляне на тех, кто уже много лет побеждал их в сражениях. Возможно, преобладала яростная решимость отомстить за все былые поражения.
Сципион продемонстрировал неприятелю, что дисциплина его воинов была столь же безупречна, сколь высок был их боевой дух. Остановив своих людей всего в нескольких сотнях метров от неприятеля, он перестроил их, разместив манипулы принцепсов и триариев в одну линию с гастатами, максимально усилив их мощь для решающего броска и в то же время растянув их фронт так, чтобы он равнялся или даже перекрывал длину фронта численно превосходящего врага. Невозмутимость войск, которым надо было произвести перестроение в самый разгар сражения, на глазах у врага, находящегося на расстоянии полета стрелы, была сравнима лишь с хладнокровием их командира. Приказ изменить строй в такой момент свидетельствовал как о гибкости мышления Сципиона, так и о его бесстрашии. Теперь все зависело от мужества его уже изрядно уставших войск и от быстроты возвращения его победоносной конницы. Тонкой линии римских войск надо было сдерживать натиск гораздо более плотной массы ветеранов Ганнибала до тех пор, покуда их коннице не удастся пробиться сквозь сумятицу рассеянной карфагенской конницы.