Сражение началось летом 202 года. Крики, сигналы труб и рожков перепугали слонов, и они бросились бежать на своих воинов. Нумидийский царь Масинисса направил основной удар на карфагенских наемников. Римская конница Лэлия при поддержке основных резервов триариев и копейщиков заставила карфагенскую пехоту бежать с поля боя. В этом сражении Сципион применил маневр Ганнибала при Каннах; дав разбить с ходу слабую часть, увлек за собой при мнимом отступлении конницу противника. Конница Масиниссы и римская под командованием Лэлия на флангах и с тыла окружили войска Ганнибала и часть их уничтожили. Войско с Ганнибалом во главе убежало с поля боя, преследуемое нумидийской кавалерией. В сражении погибло 20 тыс. воинов-карфагенян и их союзников, столько же было взято в плен (Лив., XXX, 32; ср.: Ann., Лив., 48). По сведениям же Полибия (XV, 9—14), карфагеняне потеряли более 10 тыс. человек. Потери римлян, по явно приуменьшенным данным, составили 3,5 тыс. человек. С небольшим отрядом Ганнибал бежал в Гадрумет. Оценивая сражение при Заме-Нараггаре, Ф. Энгельс писал: «…
Ашшан (Лив., 48), восхищаясь победой римлян, замечает, что победитель Сципион «
Продолжать войну Карфаген был не в состоянии. Римляне же могли сразу осадить вражескую столицу, но Сципион согласился на заключение мира, так как город невозможно было взять без длительной осады и дополнительных средств, которых не хватало для такой солидной операции. Торопили и события в Риме. Славы победителя Карфагена жаждали многие — консул Гай Сервилий, консулы 202 года Марк Сервилий и Тиберий Клавдий Нерон, консул 201 года Гней Корнелий Лентул (Лив., XXX, 24; 27; 40; Ann., Лив., 56). Сципион предложил следующие условия мира: Карфаген и его жители останутся свободными и будут жить по своим законам, пунические владения сохранятся только в Африке; все захваченные у нумидийского царя Масиниссы земли и имущество должны быть немедленно возвращены, перебежчики, военнопленные и беглые рабы выданы Риму, военный флот, кроме 10 судов, римские транспортные суда и прирученные слоны переданы римлянам. Карфагену не разрешалось воевать без согласия Рима. Накладывалась контрибуция в размере 10 тыс. талантов на 50 лет. Сципион по своему выбору получал 100 заложников (Полиб., XV, 18; Лив., XXX, 37; Ann., Лив., 54; Дион Касс., фр. 82).
Условия, продиктованные римским полководцем, были крайне тяжелыми. Карфаген, хотя и провозглашался суверенным государством, в действительности полностью попадал в зависимость от Рима, так как не мог объявлять войну и заключать мир. Утратив положение великой державы, он был скован в борьбе с любым противником. Сципион сознательно не урегулировал отношений между Карфагеном и нумидийским царством во главе с Масиниссой. В Африке создавалась взрывоопасная ситуация, что необходимо было Риму для постоянного вмешательства в дела континента в качестве арбитра.
Ганнибал был убежден, что в таких условиях вести войну Карфаген не в состоянии. Сохранив же свое существование, можно в будущем восстановить могущество и не признать мира с Римом. Все свои силы полководец приложил к тому, чтобы убедить сограждан принять унизительные условия мира (Полиб., XV, 19; Лив., XXX, 36–37). В Рим отправилось карфагенское посольство. Сенат одобрил условия мира, в 201 году мирный договор был подписан и скреплен печатями в лагере Сципиона, а вскоре ратифицирован сенатом. Пышный триумф отпраздновали в Риме, и Сципиона отныне прозвали «Африканский». Так закончилась длившаяся 17 лет вторая Пуническая, или Ганнибалова, война, окончательно установившая господство Рима в Западном Средиземноморье.