После победы при Тразиментском озере Ганнибал опять не пошел на Рим, а отправился в богатую Апулию. Из Апулии его войско отправилось в Самний, а затем в Кампанию. Фабий Максим, уклоняясь от сражения, преследовал Ганнибала по пятам. Силы Ганнибала таяли в мелких стычках с неприятелем и от болезней. Между тем командование римской армией от Фабия было передано консулам Луцию Эмилию Павлу и Гаю Терренцию Варрону. Общественность ждала от них решительных действий.
Летом 216 года карфагеняне захватили продовольственный склад римлян в укреплении вблизи города Канны. Ганнибал расположился здесь лагерем, рассчитывая, что противник попытается отбить склад. Римские легионы, действительно, двинулись к Каннам и остановились в 2 км от города 1 августа Варрон вывел войска в поле. Ганнибал еще на марше атаковал римлян конницей и пращниками. Однако Варрон успел развернуть тяжеловооруженных воинов, которые с помощью велитов отразили атаку. На следующий день командование принял Павел. Две трети армии он расположил на левом берегу реки Ауфид, а одну треть — на правом берегу, в 2 км от основного лагеря. Ганнибал же всю свою армию развернул против главных сил римлян. С утра 2 августа римские легионы из обоих лагерей выстроились в боевой порядок на левом берегу Ауфида. На левом фланге, примыкая к реке, стояла римская конница, на правом — конница союзников. Составлявшая центр пехота имела более глубокий строй, чем обычно. Впереди стояла легкая союзная пехота. Ганнибал построил боевой порядок точно так же с флангов — кавалерию, в центре — тяжеловооруженную пехоту, а перед ней — пращников и стрелков из лука. В середину своей фаланги он поставил менее опытных галлов и иберов, по краям — закаленных в боях ливийцев. Карфагенский полководец, как утверждает Полибий, обратился к войскам с короткой речью: «С победою в этой битве вы тотчас станете господами целой Италии; одна эта битва положит конец нынешним трудам вашим, и вы будете обладателями всех богатств римлян, станете повелителями и владыками всей земли. Вот почему не нужно более слов — нужны дела».
Против 4-тысячной конницы римских союзников Ганнибал бросил 2 тысячи нумидийской кавалерии, а вот против 2 тысяч римских конников сосредоточил 8 тысяч человек тяжелой карфагенской («Священная дружина»), ливийской и легкой иберской кавалерии Карфагенская конница рассеяла римских всадников, а потом ударила с тыла по коннице римских союзников. Между тем римская пехота потеснила галлов в центре и попала под удар двух сильнейших ливийских крыльев. Римские легионы оказались в кольце. Вот как описывает финал битвы Тит Ливии: «Когда римлян оставалось уже немного и они изнемогали от усталости и ран, тогда они были обращены в бегство, затем все рассеялись и, кто мог, старались найти своих лошадей, чтобы бежать. Римляне бросились со всех сторон врассыпную. 7 тысяч человек прибежало в меньший лагерь, 10 тысяч — в больший, а почти 2 тысячи — в самую деревню Канны; эти последние немедленно были окружены Карфагеном и его всадниками, так как деревня Канны не была защищена никакими укреплениями. Другой консул (Варрон. — Авт.), случайно ли или намеренно, не присоединился ни к одному отряду беглецов, но приблизительно с 50 всадниками бежал в Венузию. Говорят, что было перебито 45 тысяч 500 пехотинцев, 2 тысячи 700 всадников и почти столько же граждан, сколько союзников…»
О потерях в битве при Каннах существуют разноречивые данные. Тит Ливии утверждает, что погибло 48 200 римлян и их союзников, а 19,5 тысячи были взяты в плен. Полибий считает, что погибло около 70 тысяч римлян, а спастись сумели лишь 3 тысячи. Евтропий утверждает, что в римском войске погибло 60 000 пехотинцев, 3,5 тысячи кавалеристов и 350 сенаторов и других знатных людей. Орозий говорит о 44 тысячах убитых, а Флор — о 60 тысячах. Плутарх называет цифру в 50 тысяч погибших. По его сведениям, 4 тысячи римлян попали в плен в ходе сражения, а еще 10 тысяч были взяты позднее в обоих лагерях. Потери же карфагенян, по данным Ливия, составили 8 тысяч убитых, а по данным Полибия — 5700. У римлян погибли консул Эмилий Павел, 21 военный трибун и 80 сенаторов.