Mais le 14 juin, des rapports alarmants parviennent au QG de campagne de Scipio:
Hannibal, à la tête d'une grande armée, a franchi la rivière Olius et est entré en Berganum au nord de Mutina.
Puis, il a incurvé sa trajectoire vers le sud.
Scipio comprend immédiatement le danger et convoque ses 5 commandants de Légions: il faut tenir la rive droite du Padus (Pô) et empêcher Hannibal de franchir le fleuve.
D'ouest en est, Scipio dispose ses légions comme suit:
la IIIe (Pomponius) et la IVe (Crassus) formeront l'aile gauche; puis viendra la Ire (Mammula); enfin, la IIe (Serranus) et la Ve (Aemilius) formeront l'aile droite.
Les auxiliaires syracusiens, vénètes et les Equites seront en réserve.
L'armée quitte ses cantonnements et part vers le nord.
Mais très vite, la situation se dégrade.
En effet, Hannibal va plus vite que prévu, beaucoup plus vite si bien que le 19 au soir, ses avant-gardes atteignent déjà le grand fleuve.
Le 20 juin est le grand jour.
Mais l'armée romaine ne s'est pas déployée comme prévu.
Si l'aile gauche a réussi son placement, l'aile droite est en retard et très vite, tout se complique car Hannibal a profité de la nuit pour faire passer une partie de ses troupes de l'autre coté du fleuve, en particulier le gros de sa cavalerie, ses éléphants, des Ambactes Boiens ainsi que ses mercenaires gaulois sous le commandement de Marharbal Himilco et les ibériens de Mago.
Les IIe et Ve Légions/Alae* sont rapidement débordées par les tactiques de harcèlement de la cavalerie numide, puis doivent reculer face à l'assaut des ibériens et des gaulois tandis que la Ie Légion peine face aux Ambactes.
L'aile droite romaine qui a subi également une charge de pachydermes est donc en plein désordre; Scipio y envoie ses vénètes et les Equites qui rétablissent de justesse et très provisoirement la situation.
Hannibal ne laisse pas une seconde de répit à Scipio et lance alors dans la bataille la majeure partie de ses troupes, en particulier ses africains qui sont face à l'aile gauche romaine, le tout de façon à saturer la défense de Scipio.
Coté romain, les mauvaises nouvelles affluent mais la pire, c'est que la population boienne de Mutina s'est révoltée à nouveau et a repris le contrôle de la ville.
Autrement dit, la retraite de Scipio en direction de l'est, vers la province de Bononia (capitale Felsina) est coupée.
Heureusement, le train de ravitaillement a pu être sauvé et Scipio ordonne aux Equites, revenus de leur raid meurtrier sur les arrières des Ibériens, de les escorter un moment vers l'ouest, en direction de Placentia.
Pendant ce temps, la bataille fait rage.
Les forces carthaginoises, très supérieures en nombre, font le forcing et l'aile droite romaine recule de plus en plus.
Les Légions sont toutefois soutenues efficacement par leurs Alae et tiennent le choc.
A gauche, ça se passe mieux par contre.
En dépit d'effectifs très supérieurs, les africains et les espagnols qui traversent le fleuve n'arrivent pas à faire reculer les Légions de Pomponius et de Crassus et subissent de très lourdes pertes.
Mais à droite et même au centre, ça devient critique.
Hannibal qui dispose maintenant d'une tête de pont sûre y envoie de plus en plus de troupes, les romains et leurs alliés Socci y combattent à 1 contre 2 et commencent à paniquer.
Scipio a compris que c'est fichu et qu'il faut se replier car Hannibal est trop fort.
C'est alors qu'il remarque un fléchissement de l'offensive punique contre son aile droite (il ignore qu'en fait, les troupes d'Hannibal sont épuisées) et décide d'en profiter pour décrocher en ordre, enfin, à peu près.
Il ne lui reste en réserve que ses tirailleurs syracusiens non encore engagés; il décide de les cacher dans un bois à proximité de l'aile droite romaine puis au moment où cette dernière reçoit l'ordre de décrocher, ces tirailleurs se découvrent soudainement en balançant une nuée de javelots sur l'ennemi.
Cela suffit à déstabiliser l'ennemi qui perd de précieuses minutes à se rétablir.
Un groupe de cavaliers numides tente alors une manoeuvre de flanc mais se fait totalement surprendre par les Equites tout frais, justement de retour de leur mission d'escorte et sont quasiment anéantis.
Les Ve et IIe Légion particulièrement éprouvées et leurs Alae parviennent à se rétablir de justesse un peu plus loin tandis que le reste de l'armée de Scipio se retire en bon ordre.
La bataille est perdue maintenant, Hannibal a vaincu mais les romains ne lui laissent que 500 prisonniers et son armée a subi de lourdes pertes également.
* Pas toujours facile de trouver dans le rapport la cohérence du combat; en plus, il semble que les Alae ne combattent pas systématiquement aux cotés de leur légion de rattachement; bref, c'est assez compliqué.