Après sa défaite dans l'engagement du Tessin, Publius Cornelius Scipio s'était replié sur la Trébie où il attendait le renfort de l'autre consul, Tiberius Sempronius Longus. Avant que ce dernier ne le rejoigne mi-décembre, Scipion subit des défections parmi ses alliés gaulois tandis qu'Hannibal accumulait au contraire les ralliements de guerriers celtes.
Quelques jours avant la bataille, une escarmouche de cavaliers (500 numides contre 300 romains), tourne a l'avantage de ces derniers. Cela redonne vigueur à l'armée romaine après sa défaite à Tessin. Spicion décide d'agir si l'occasion se présente pour profiter de l'enthousiasme de ses troupes, ou si rien ne se produit attendre les renforts du second consul. Hannibal devait agir pour conserver à ses troupes leur cohésion et leur motivation.
Entre le campement des deux armées coule un ruisseau, renfermé de toutes parts, dans les rives profondes et couvertes d'herbe marécageuse, de broussaille. Hannibal le remarque, et dit a son frère Magon de choisir mille cavaliers et mille fantassins parmi les plus braves et de les embusquer ici.
La bataille
À l'aube, Hannibal envoie sa cavalerie Numide (1800 cavaliers) franchir la Trébie et provoquer les Romains. Tiberius Sempronius Longus improvise aussitôt une sortie mal préparée. La cavalerie sort en premier, suivie de l'infanterie en désordre. Sous la neige, les Romains traversent les eaux glaciales de la Trébie qui gonflées par la pluie et la neige, leur arrive jusqu'aux épaules. Ils en ressortent épuisés et frigorifiés, pouvant d'après Tite-Live à peine tenir leurs armes. En face, les Carthaginois s'étaient préparés à combattre dans le froid en allumant des feux et en se couvrant d'huile.
Outre la troupe en embuscade de Magon, Hannibal répartit ainsi ses forces : les frondeurs des Baléares en avant (8000 hommes), l'infanterie au centre et deux ailes de 5000 cavaliers, avec à leur tête les éléphants. Tiberius Sempronius Longus disposa ses troupes selon l'ordre de bataille romain habituel : l'infanterie (18000 Romains et 20000 alliés) au centre, sa cavalerie (6000) étant en train de poursuivre les numides.
Conséquence
Les pertes carthaginoises étaient faibles, mais la plupart des éléphants moururent de leurs blessures à cause du froid. Les jours suivants, Hannibal fait poursuivre les Romains par les cavaliers numides restant, mais garde le reste de son armée auprès de lui, car des pluies torrentielles se mirent à tomber et son armée avait besoin de repos. Le sénat commence à prendre conscience de l'ampleur du danger qu'est Hannibal à cause de ce désastre.
Le combat débute par un affrontement entre la cavalerie numide qui a attiré les Romains qui fait volte face et attaque la cavalerie romaine à sa poursuite. Surpris, les cavaliers romains se battent, mais Spicion leur ordonne le repli et les distribue sur ses deux ailes. La bataille commence vraiment quand l'infanterie romaine monte à l'attaque des frondeurs des Baléares, obligeant Hannibal à les replier sur les ailes. Ce mouvement a pour effet de déborder totalement la cavalerie romaine, engagée déjà en sous nombre face à la cavalerie carthaginoise. Les éléphants effrayant les chevaux, l'avantage tourne vite dans le camp d'Hannibal. Au centre, le combat est équilibré, l'infanterie romaine est épuisée par sa traversée des eaux mais sa valeur et son nombre lui permet de tenir tête aux carthaginois. Lorsque la cavalerie romaine est mise en déroute, les frondeurs encerclent les flancs de l'infanterie romaine et la crible de traits tandis que les éléphants se portent au centre. A ce moment, Magon sort de sa cachette et attaque l'arrière de l'armée romaine déjà malmenée. Les éléphants attaquent ensuite les auxiliaires romains qui paniquent et s'enfuient. Démoralisée par la fuite des auxiliaires, l'armée romaine est mise en déroute. Les fantassins se sauvent comme ils le peuvent, retraversant le lac ou fuyant dans les bois. Ceux qui réussirent à s'enfuir prirent la route de Plaisance ou retournèrent dans le campement.