Зная о своем численном перевесе, карфагенский командующий не спешил. Ему казалось, что его противник просто робеет, не решаясь вступить в открытый бой с превосходящими силами. Но многоопытный Гасдрубал ошибался. У Сципиона был свой замысел, в который он, по своему обыкновению, никого не посвящал. Уроки, полученные при Каннах, и усилия, потраченные Публием на тренировки войск, не пропали даром. Его план полностью удался. Накануне решающего дня Сципион приказал своим воинам позавтракать еще до рассвета, покормить и оседлать коней, приготовить оружие. Едва только взошло солнце, Сципион бросил всю свою конницу и легковооруженных пехотинцев на неприятельские посты, а сам с пехотой выступил следом. В отличие от предыдущих дней, он поставил в середине строя испанцев, а на фланги послал легионы. Разбуженный Гасдрубал выслал вперед конницу и стал наспех строить своих воинов, еще не поевших и не подготовившихся к битве. Не заметив впопыхах, что римские силы расположились по-новому, Гасдрубал нисколько не изменил своего обычного построения. Всадники и легковооруженные долго бились с переменным успехом. Сципион сознательно замедлял ход сражения и не вводил в бой главные силы. Вражеских солдат, стоявших в строю под оружием, начинало немилосердно жечь уже достаточно высоко поднявшееся солнце. Голод и жажда истомили их еще до боя. Лишь ближе к полудню римский полководец отозвал свою легкую пехоту и конницу. Они отошли назад через промежутки между манипулами и заняли место на флангах за стоявшими там легионами. Испанцам, занимавшим середину строя, Публий приказал медленно наступать на карфагенян. Когда до неприятельского строя оставалось метров семьсот, легионеры на правом фланге по команде сделали оборот направо, а те, кто был на левом крыле, повернули налево. Образовались две колонны, которые стремительно двинулись на вражеский строй. В непосредственной близости от противника колонны остановились, легионеры развернулись и снова построились в линию, а конница и легкая пехота сделали поворот в другую сторону и стали обходить неприятелей с флангов. Благодаря такому перестроению римляне удлинили свою боевую линию. Дружная атака римской пехоты и конницы опрокинула слабейшие части вражеского войска, стоявшие на флангах, в то время как отборная пехота Гасдрубала оставалась в бездействии, потому что римский центр еще не вступил в бой. Чтобы избежать неминуемого окружения карфагеняне стали отступать, и поначалу они сохраняли строй. Но затем, теснимые римлянами, были отброшены к лагерю. И если бы не внезапно разразившаяся гроза, римляне взяли бы неприятельский лагерь с ходу. Утром карфагеняне обратились в бегство, но были настигнуты Сципионом. Гасдрубал, бросив остатки своих войск, бежал в Гадес, где укрылся также и Магон. Те из пунийцев, кто не погиб во время битвы и преследования, частью сдались в плен, частью рассеялись по городам. Но эти города вскоре были взяты римлянами.
Попытки испанских племен восстать против римской власти были подавлены. А после того, как Магон отплыл из Гадеса в Италию (Гасдрубал еще раньше вернулся в Африку), и этот город, последний оплот пунийцев на Пиренейском полуострове, сдался римлянам. Карфагеняне навсегда были изгнаны из Испании. В конце 206 г. до н. э. Сципион в блеске славы вернулся на родину и восторженно был встречен народом. Люди отовсюду приходили в Рим, чтобы только увидеть молодого героя.
Однако некоторые римские аристократы относились к успехам Сципиона с ревностью и даже враждебностью. Сенат отказал ему в триумфе под тем предлогом, что Публий еще не занимал высших должностей в государстве и по закону не мог претендовать на триумфальные почести. Несмотря на это, Сципион, чувствуя поддержку сограждан и веря в собственное предназначение, выставил свою кандидатуру на консульских выборах. При небывалом стечении народа он был избран единогласно. Все знали, что Сципион считал борьбу с Ганнибалом в Италии совершенно устаревшей затеей и замыслил перенести войну в Африку. Против этого плана выступали многие сенаторы. Особенно резок был 80-летний Фабий Максим Кунктатор. Ему идея молодого полководца казалась полным безрассудством. Старый диктатор обвинял Сципиона в непомерном честолюбии и считал его баловнем судьбы, все предприятия которого удаются вопреки расчетам, случайно. Он не понимал того, что было ясно Публию: надо воевать не с Ганнибалом, а с Карфагеном; если не уничтожить мощь этого государства, не лишить его всех владений, то через некоторое время вновь придется вести войну с каким-нибудь новым Ганнибалом.