На поле боя Сципион поставил впереди манипулы гастатов, на некотором расстоянии один от другого, за ними – принципов, но не напротив промежутков в передних рядах, а за самими гастатами, чтобы иметь возможность пропустить через эти интервалы вражеских боевых слонов. Последними стояли триарии – испытанные ветераны. Манипулы триариев были немногочисленны, каждый состоял всего из одной центурии, но это была грозная сила, потому что в бою один ветеран стоил нескольких молодых солдат. Конница построилась на флангах. Особенно сильной была ее нумидийская часть, так как нумидийцы умели маневрировать с невероятной быстротой. Они утомляли неприятеля беспрерывными атаками, нападая со всех сторон. Карфагеняне выдвинули слонов, отряды наемников и легкую пехоту вперед, а вторую линию, в основном вновь набранное карфагенское ополчение, расположили в двухстах метрах за первой. Ганнибал решил отвлечь с поля сражения конницу противника, а затем окружить римскую пехоту. В случае неудачи он рассчитывал отвести карфагенскую армию в укрепленный лагерь. В третьей линии стояли ветераны Ганнибала.

Бой начали карфагеняне одновременной атакой кавалерии с флангов и слонов в центре. Римская кавалерия, более многочисленная и сильная, конечно, отбросила конницу карфагенян и бросилась в погоню, быстро исчезнув из поля зрения. Так расчет Ганнибала удался, и численный перевес на поле боя перешел к нему. В это время в центре римлян атаковали слоны. Но Сципион назначал для борьбы с ними специальных метальщиков, которые метали в слонов дротики и производили сильный шум с помощью труб и рожков, пугая животных. В результате слоны повернули назад и стали топтать свою же пехоту. Ганнибал продолжил пехотную атаку в центре. Но первую линию войск Ганнибала составляли многочисленные отряды наемников; они не сумели выдержать рукопашной борьбы с легионерами, а также неожиданной атаки собственных отступающих слонов, и быстро бежали, обтекая фланги двигавшейся вслед за ними второй линии карфагенской армии.

Здесь шли хорошо вооруженные фаланги карфагенских граждан и македонян – союзников Карфагена. Копьеносцы второй линии армии Ганнибала разогнали бегущих перед ее фронтом наемников и нанесли сильный удар гастатам. Римская пехота приостановилась. При этом Ганнибал начал охватывать фланги противника своей третьей, самой сильной линией, состоящей из ветеранов, сражавшихся с ним пятнадцать лет в Италии. Этот прием Ганнибал применял во многих сражениях; выдвижение и охват флангов противника отборными частями пехоты всегда обеспечивали ему успех. Но Сципион сделал почти одновременно аналогичный ход, то есть выдвинул на фланги своих принципов (воинов второй линии) и триариев (воинов-ветеранов третьей линии). Это были равные противники. Завязалось кровопролитное фронтальное столкновение пехоты. Стороны были почти равны по численности и воодушевлению, а также по вооружению и храбрости, поэтому «исход битвы долгое время оставался неясным, ибо сражавшиеся считали своим долгом держаться на своих местах до последнего издыхания», – писал Полибий. Но в этот момент после преследования противника вернулась римская конница. Конники Масиниссы быстро сориентировались на поле боя и неожиданно ударили в тыл карфагенянам. Это решило исход сражения.

Поражение Ганнибала было полным. Карфагеняне потеряли двадцать тысяч человек убитыми и десять тысяч пленными, сто тридцать три знамени и одиннадцать слонов. Римляне потеряли убитыми около двух тысяч человек. После этой битвы военная мощь Карфагена была сломлена, так как у города не оказалось ни денег, ни армии. В 201 году до н. э. Карфаген капитулировал и вынужден был согласиться на тяжелейшие условия мира: он утрачивал все владения за пределами Африки, лишался всего военного флота (пяти сотен кораблей) и боевых слонов, его территория ограничивалась небольшим городским округом в Африке. Карфаген не имел права вести войну без разрешения Рима и должен был выплачивать контрибуцию в десять тысяч талантов в течение пятидесяти лет. Кроме того, Рим сурово наказал своих бывших италийских союзников, перешедших на сторону Ганнибала: их земли конфисковывались, города лишались прав, жителям было запрещено носить оружие. Таким образом, Рим превратился в сильнейшее государство Средиземноморья.