Сципион ничего не знал о планах Гасдрубала и решил дать противнику генеральное сражение. Проконсул приказал очистить террасы от карфагенян и отправил в бой велитов, а затем сразу же ввел в сражение пехоту экстраординариев. Римляне были вынуждены продвигаться по неровной и каменистой дороге, не имея возможности развернуть боевые порядки. Чем карфагеняне и воспользовались, засыпав атакующего противника градом метательных снарядов. Но велиты и экстраординарии, несмотря на большие потери, упорно карабкались наверх и вскоре вышли на нижнюю террасу, где вступили в ближний бой с противником.
На склонах холма завязались отчаянные схватки, римляне стали теснить балеарских пращников и нумидийцев. Но в этот момент немногочисленные ливийские копейщики передового отряда охранения сомкнули ряды, прикрылись щитами и пошли в атаку. Увидев, что его воины дрогнули и отступают, Сципион ввел в сражение все мобильные войска, а сам с легионами стал обходить холмы с левой стороны. Справа такой же маневр выполнял Гай Лелий. Заметив, что римляне пытаются охватить его войска с флангов и запереть в ловушке, Гасдрубал прекратил вывод из лагеря тяжеловооруженной пехоты и отправил её на верхние террасы холмов, чтобы остановить обходное движение легионеров и дать возможность уйти со своих позиций отрядам охранения и нумидийцам. Карфагеняне поднялись на вершины и стали разворачивать боевые порядки, но в этот момент подоспели римляне и с ходу пошли в атаку. Ливийская пехота так и не успела закончить построение, а потому не выдержала удара легионов и начала отступление.
Гасдрубал увидел воцарившееся смятение и решил исправить ошибку, которую допустил, введя в бой ливийских пехотинцев. Он приказал ливийцам выйти из битвы и быстро уходить к реке Таг. Копейщики, так толком и не вступившие в сражение с римлянами, выполнили распоряжение командующего, спустились с холмов, прошли мимо брошенного лагеря и устремились к реке. Сципион только проводил взглядом удаляющиеся вражеские колонны. Зато на нижней террасе бой продолжался, и победа там решительно клонилась на сторону римлян.
Видя, что противник одолевает, Масинисса приказал своим всадникам уходить. Нумидийцы развернули коней и помчались вдоль гребня холмов, а велиты устремились за ними, бросая вслед противнику короткие копья и дротики. Вместе со своими воинами покидал поле боя и Массива, племянник Масиниссы, но неожиданно его конь споткнулся, и наездник, перелетев через голову своего скакуна, оказался на земле. И пока он приходил в себя от падения, набежали римляне. Молодого человека схватили, скрутили и поволокли к толпе стоявших в стороне пленных. Но многие нумидийцы вырвались из окружения и благополучно ушли вслед за Гасдрубалом. Сципион не рискнул преследовать противника, а приказал легионерам спускаться с холмов и захватить покинутый карфагенянами лагерь. Полководец опасался появления армий Магона и Гасдрубала, сына Гискона, поэтому не хотел уходить далеко от удобной позиции, где можно было дать сражение численно превосходящему противнику.
После боя Сципион занялся разделом добычи, захваченной в брошенном карфагенском лагере. Следуя свой политике по отношению к местному населению, полководец всех пленных испанцев отпустил по домам без выкупа, а ливийцев продал в рабство. Здесь и произошло судьбоносное событие, оказавшее непосредственное влияние на дальнейший ход войны. Среди пленных африканцев оказался племянник Масиниссы по имени Массива, который вместе со своим дядей воевал в Иберии против римлян. Публий быстро сообразил, какую может извлечь пользу из этого подарка судьбы, и приказал привести к себе в палатку пленника. Когда легионеры поставили перед полководцем симпатичного молодого человека, то Сципион спросил его, не хочет ли он вернуться к своему дяде Масиниссе. Массива несказанно обрадовался и стал горячо благодарить Публия. Но командующий только снисходительно улыбнулся и сказал парню, что дарит ему золотое кольцо, тунику с широкой каймой, испанский плащ с золотой застежкой и лошадь в полной сбруе (Liv. XXVII, 19). После чего приказал своим людям доставить племянника Масиниссы туда, куда он пожелает.
Затем Сципион вызвал к себе союзных иберийских вождей и щедро их одарил, особенно отметив Индибилиса, которому отдал три сотни отборных лошадей, захваченных у карфагенян. Испанцы от такого уважительного отношения растрогались, неожиданно пали ниц перед полководцем и провозгласили его царем. Но Публий знал, к чему могут привести в Риме эксперименты с царским титулом, и поэтому на корню пресек подобные разговоры. Он просто поблагодарил иберийцев за доброе отношение к его скромной персоне, но на будущее порекомендовал им называть его просто военачальником (Polyb. X, 40). На этом дело и закончилось.