Ганнибал, заметив движение римской армии из лагеря за р. Ауфид, послал туда балеарских пращников и всю легкую пехоту и под прикрытием их перевел туда же в двух колоннах свои войска и начал их строить в боевой порядок. Всю испанскую и галльскую конницу (8 тыс. чел.) под начальством Гаструбала он расположил на левом крыле в две линии: 2/3 ее – в первой и 1/3 – во второй линии; нумидийскую конницу (2 тыс. чел.) – враздробь частями, перед фронтом всего левого крыла римской армии, и, наконец, всю тяжелую пехоту (около 32 тыс. чел.) – африканскую, самую лучшую, поставил по флангам фалангой в 16 шеренг и по отделениям в 1 тыс. чел. каждое, вооружив ее
Ганнибал первый двинулся в атаку уступами из центра. Легкие войска начали горячий бой. Гаструбал повел атаку против римской конницы правого крыла; начался упорный рукопашный бой, причем многие
Между тем Гаструбал, опрокинув конницу правого крыла, проскакал в тылу римского боевого порядка и атаковал с тыла конницу их левого крыла. Угрожаемая спереди нумидийцами, а сзади Гаструбалом, она обратилась в бегство и рассыпалась по равнине: с нею бежал и Варрон. Гаструбал, послав нумидийцев преследовать бегущих, сам устремился на помощь своей пехоте. В это время в центре римляне энергично наступали, тесня перед собою галлов и испанцев; тогда Ганнибал приказал легкой пехоте заполнить интервалы отступавших и тем дал римлянам отпор. Под напором африканской пехоты римские легионы столпились в кучу. В это время Гаструбал, разделив свою конницу на части, атаковал римскую пехоту с тыла и с обоих флангов. Началось избиение.
Павел Эмилий, тщетно старавшийся устроить войска, пал славною смертью героя.
Оставленные в лагере 11 тыс. римских войск атаковали сильно укрепленный лагерь Ганнибала, но не могли овладеть им. Ганнибал двинулся туда на помощь с частью своей армии и опрокинул римлян с потерею 2 тыс., в их лагерь, где они на следующий день сдались.
Римская армия понесла в этот день страшное поражение: более 40 тыс. чел. пехоты и 4 тыс. чел. конницы были убиты, в том числе консул Павел Эмилий, проконсул Сервилий, бывший магистр конницы Фабий Мануций, 21 трибун и 80 сенаторов. Успевшие спастись 14 тыс. чел. заперлись в Венуции и Канузии. Потери Ганнибала были 5700 чел.
Сражение под Каннами представляет поразительное явление в истории военного искусства: армия Ганнибала, вдвое слабейшая по числу, а в значительной части своей и по качеству войск, с фалангой против манипулярного строя легиона, имея только превосходство в кавалерии, наносит страшное поражение римлянам. Это торжество военного искусства Ганнибала. Мы видели, какими мерами он парализует сильную сторону пехоты римлян – стройность маневрирования и методизм в действиях линий манипулярного строя: он сбивает их в кучу и добивает конницей Гаструбала.