Сципион построил свою армию не сплошным фронтом, а отрядами, между
которыми были оставлены проходы, по которым в случае надобности могли
идти боевые слоны. На левом фланге под командованием Лэлия он поместил
италийских всадников, на правом — нумидийскую конницу Массиниссы.
Проходы между отрядами тяжеловооружённых пехотинцев он заполнил
легковооружёнными солдатами, которые должны были при появлении слонов
убежать в тыл или примкнуть к ближайшим отрядам. Животные, двигаясь по
этим живым коридорам, попали бы под перекрёстный обстрел дротиками.
Ганнибал перед своими войсками поставил 80 слонов, за ними
вспомогательные отряды лигуров, галлов, балеаров и мавров, во втором
ряду — карфагенян, ливийцев и небольшую группу македонян, которых
наконец-то прислал на помощь Филипп, за ними — отряды италиков, большей
частью брутиев, вынужденных навсегда покинуть родную землю и, наконец,
на правом фланге карфагенскую, а на левом — нумидийскую конницу.
Битва началась с того, что римляне своим криком, сигналами труб и рожков перепугали слонов, и они, уж в который раз, обратились против своих, главным образом против стоявших на левом фланге мавров и нумидийцев. Туда же направил свой удар и Массинисса. Те немногочисленные животные, которые устремились на врага, попали под удары римских дротиков и в конце концов повернули направо, против карфагенских всадников, куда двинул свою конницу и Леллий. Так как на стороне римлян теперь сражались нумидийцы, то Магарбал, командир карфагенской конницы, решил отступить и заманить вражеских всадников подальше от места сражения, уравняв силы сторон. Второй ряд карфагенян попытался обойти римлян с флангов. После этого римский натиск несколько ослаб, и тогда Сципион, убрав раненых, ввёл в дело триариев, то есть основные резервы. Сражение возобновилось, а тем временем Леллий и Массинисса, которые разбили пунийскую кавалерию, сумели собраться и напали на карфагенскую пехоту с тыла — карфагеняне побежали.