Карфагенский командующий сразу же понял, что судьба дает ему шанс одним ударом покончить с обоими римскими полководцами. Поэтому Гасдрубал остановил движение армии и приказал разбить лагерь. Разгромив Сципионов, он мог спокойно идти в Италию, оставив Гимилькона наводить порядок среди испанских племен. Гасдрубал не сомневался, что как только римляне будут разгромлены, то их испанские союзники сразу же перейдут на сторону Карфагена. Сын Гамилькара сознательно поднял ставки, надеясь решить судьбу Испании и Италии одним сражением. Но всё это понимали и братья Сципионы.
Лагеря двух враждующих армий находились на расстоянии пяти миль один от другого, и практически каждый день между передовыми отрядами происходили мелкие стычки. Наконец как римским военачальникам, так и карфагенскому полководцу надоело состояние неопределенности, и они вывели свои армии на поле боя.
Сципионы развернули свои войска в классическом построении в три линии – гастаты, принципы и триарии, на флангах поместили конницу, а велитов разместили перед фронтом и в промежутках между манипулами. Гасдрубал в центре боевых порядков поставил иберийских воинов, левый фланг прикрыл ливийскими копейщиками и наемниками, а справа выстроил карфагенскую пехоту. Вместе с ливийцами встали нумидийские всадники, имеющие по две лошади, они должны были в разгар битвы пересесть на свежих коней и нанести удар по измотанному боем врагу. Остальная кавалерия прикрывала отряды пунийцев.
Бой начался столкновением иберийской пехоты с гастатами. Противники сблизились, забросали друг друга копьями, после чего сошлись врукопашную. Одновременно пошли в атаку отряды ливийских копейщиков и карфагенской пехоты, ударив по флангам римской армии, они начали теснить противника. Но в это время под слаженным ударом легионов рухнул центр карфагенского строя, и иберийская пехота обратилась в повальное бегство. Видя отступление испанцев, нумидийские и мавританские наездники развернули коней и поспешили покинуть поле сражения, уводя за собой и боевых слонов.
Казалось, всё кончено, но Гасдрубал не растерялся. Ливийцы справа, а карфагеняне слева зажали римский строй и вынудили легионеров сражаться на две стороны, стоя спиной к спине. Если бы половина пунийской армии не разбежалась по окрестностям, то для римлян всё было бы кончено. Но Сципионы уверенно руководили войсками, а вскоре стало сказываться и численное превосходство легионеров. Карфагенская армия, оставшись без прикрытия конницы, подверглась атакам римских всадников с флангов и в итоге была разгромлена. Гасдрубал до конца пытался изменить ситуацию на поле боя, но, увидев, как его люди, бросая щиты, мечи и копья, побежали под вражеским натиском, хлестнул коня и в окружении горстки телохранителей скрылся с места сражения. В упоении от победы, римляне пошли на штурм вражеского лагеря и без труда им овладели. Добыча была захвачена большая, но куда весомее оказались стратегические последствия этой битвы.
Подведем итоги. Это сражение имело огромное значение для дальнейшего хода войны, поскольку не только сорвалось вторжение Гасдрубала в Италию, но и все испанские владения карфагенян оказались под угрозой. Иберийские племена наглядно увидели, на чьей стороне сила, и окончательно сделали выбор в пользу Рима. На все эти аспекты противостояния обратил внимание Тит Ливий: «