La batalla, considerada como la obra táctica maestra de Aníbal, se libró finalmente el 2 de agosto del 216 a. C.,[33] sobre la ribera izquierda del río Ofanto (sur de Italia). Desde que tomaron el mando los dos cónsules, decidieron alternar diariamente el mando del ejército. Varrón, comandante de las fuerzas ese día, estaba decidido a vencer a Aníbal.[97] A la cabeza de 50.000 hombres,[33] el general cartaginés se aprovechó del ímpetu de los romanos, y lo condujo a una trampa en la que aniquiló a su ejército. Aníbal envolvió a los romanos, reduciendo el área del campo de batalla y eliminando así su ventaja numérica. Colocó el centro de su infantería hispana y gala en un semicírculo convexo, poniendo en las alas a su infantería africana. Contigua a esta puso en su flanco izquierdo junto al río Ofanto a 6.000 jinetes de la caballería pesada hispano-gala bajo mando de Asdrúbal y en el derecho a unos 4.000 jinetes númidas mandados por Maharbal.[97] En el ala derecha romana se situaron los 2.000 jinetes de la caballería romana bajo mando de Emilio Paulo y en la izquierda los 4.500 de la itálica bajo mando de Varrón. El combate se inició con la derrota junto al río de la caballería romana de Emilio Paulo. Mientras, las legiones romanas, que se extendían sobre aproximadamente un kilómetro y medio del terreno, se lanzaron contra el centro del ejército púnico, que fue retrocediendo de manera controlada cambiando su forma convexa a una cóncava en forma de "U", encerrando a los legionarios en su interior.[20] La caballería de Asdrúbal —que no debe confundirse con Asdrúbal Barca—, situada en el flanco izquierdo, tras eliminar a sus oponentes romanos, rodeó por la espalda a las tropas romanas y atacó a la caballería de Varrón, que hasta ese momento había permanecido en un combate equilibrado contra la caballería númida.[97] Esta maniobra puso en fuga a la caballería itálica que fue inmediatamente perseguida por los númidas, dejando de este modo solos a los infantes romanos. Aprovechando además que en ese momento se desató viento polvoriento de cara contra el frente romano, que les impedía ver la situación, Aníbal ordenó a su infantería africana de las alas que girasen 90º para encerrar los flancos de los romanos. Por la espalda la caballería pesada hispano gala completó el cerco. El ejército romano estaba encerrado, comenzando entonces una masacre de los legionarios, que supondría su casi total aniquilación.