O exército romano era moi superior ó cartaxinés (80000 romanos contra de 20000 a 40000 cartaxineses). Haníbal, coñecedor da súa desvantaxe, apostouse nun outeiro, formando unha xigantesca liña convexa, coa súa infantaría africana (a mellor parte do seu exército) no centro, e cos mercenariosgalos e iberos nos flancos.
Aínda que a infantaría cartaxinesa era moi inferior á romana, a súa cabalaría era superior, pois contaba con bos xinetes cartaxineses e pola cabalaría númida, e Haníbal enviouna para flanquear ó adversario.
A cabalaría romana enfrontouse coa cartaxinesa, e resultou perdedora e fuxiu. A cabalaría cartaxinesa dispúxose a perseguir á romana en retirada.
Pola súa banda, a infantaría cartaxinesa aproveitou a situación. Tanto o vento coma o sol estaban ó seu favor, e os arqueiros romanos non puideron disparar contra eles. A infantaría romana tivo que avanzar, topándose cunha férrea defensa cartaxinesa.
Tras un tempo loitando ámbolos exércitos, volveu a cabalaría cartaxinesa de perseguir ó inimigo, a cal cargou contra os romanos polas costas das súas formacións, pillándoos a dous fogos e esnaquizándoos.
Os romanos fuxiron, deixando ó atardecer 50000 baixas (dos cales 10000 foron feitos prisioneiros). Tras este triunfo Roma actuou con cautela, conseguindo tras enormes esforzos a vitoria final sobre Cartago.