Когда командующий римской армией в Испании консул Корнелий Сципион, бросившись вдогонку за Ганнибалом, подошел к Роне, то карфагенское войско уже оторвалось от него на три дневных перехода и подходило к Альпам. Тогда Сципион часть войск вернул в Италию, а во главе остальных перешел в Италию вдоль берега моря на соединение с армией консула Семприония Лонга, прибывшей из Италии. В декабре 218 года у реки Тичино Сципион столкнулся с Ганнибалом, потерпел поражение и был ранен. Однако ему удалось спасти от уничтожения основную часть своих легионов и соединиться у города Плаценции с войсками Лонга. Оба консула заняли хорошо укрепленную позицию на восточном берегу реки Треббии и поджидали карфагенян. У них было 32 тысячи пехоты и 4 тысячи конницы против 30 тысяч пехоты и 10 тысяч конницы у Ганнибала. Карфагенский полководец стремился вызвать римлян на бой. Пунийская конница перешла Треббию и двинулась к римскому лагерю. В засадный отряд, расположившийся за ручьем за правым флангом карфагенского войска, Ганнибал отрядил "Священную дружину" – отборную кавалерийскую часть, сформированную из представителей наиболее знатных семей Карфагена.
Когда продрогшие легионы построили боевой порядок на равнине, Ганнибал бросил против них опытных балеарских стрелков, которым Лонг противопоставил новобранцев-велитов. Последние не выдержали атаки и быстро отступили за линию тяжеловооруженных воинов. Те, в свою очередь, прорвали фронт галльской пехоты, составлявшей центр карфагенской армии. Фланги же римлян подверглись атаке нумидийской конницы и засадного отряда и были разбиты. Только 10 тысяч римлян в центре смогли пробиться сквозь галльскую пехоту и отступить, сохранив боевой порядок. Остальные погибли, были пленены или разбежались. Пленных из числа римских союзников Ганнибал отпустил без выкупа, надеясь привлечь их на свою сторону для борьбы с Римом.
Летом 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 тысяч убитых, а по данным Полибия – 5 700. У римлян погибли консул Эмилий Павел, 21 военный трибун и 80 сенаторов.
Однако цифры, относящиеся к римским потерям, и описание хода сражения римскими историками не заслуживают никакого доверия. Да и вопрос об источниках, откуда римские историки почерпнули сведения о битве при Каннах, равно как и о многих других битвах, остается открытым. Ясно, что уцелевшие после сражения легионеры и даже центурионы и трибуны не в состоянии были бы дать более или менее полную картину сражения. Относительной полнотой информации мог владеть только уцелевший консул Теренций Варрон или кто-то из близких к нему старших офицеров. Однако, если судить по сообщениям тех же Плутарха, Тита Ливия и Аппиана, римские военачальники уже в середине битвы утратили управление войсками и не знали точно, что же происходит. Очевидно, истинную картину Канн мог бы дать нам Ганнибал или кто-то из его ближайших соратников, но они, насколько известно, мемуаров не оставили, а если и оставили, то в исторической традиции они не отразились. Историю-то писали победители, а Карфаген был разрушен, и в огне пожара, охватившего родной город победителя при Каннах, погибли, вероятно, и пунийские свидетельства о войнах с римлянами. Есть все основания полагать, что римские историки черпали информацию о сражении при Каннах от спасшихся рядовых воинов и младших офицеров, рассказы которых слились в эпическое повествование о страшном бедствии, постигшем римское войско. Побежденным, конечно же, казалось, что пунийцы везде и что большинство их товарищей погибли, но так ли это было на самом деле – большой вопрос.
Совершеннейшей загадкой остается, почему римская пехота, успешно теснившая галлов, даже будучи окруженной, не смогла, как в битве при Треббии, прорвать ослабевший неприятельский фронт, якобы умышленно сделанный Ганнибалом в центре значительно тоньше, чем на флангах, и спастись? Ливий утверждает: "…После продолжительных и многократных усилий римляне своим плотным строем, представлявшим косую линию, сломили выдававшуюся из остального строя неприятельскую фалангу, которая была редка, а потому весьма слаба. Затем, когда пораженные враги в страхе попятились назад, римляне стали наступать на них и, двигаясь через толпу беглецов, потерявших от ужаса голову, разом проникли сперва в середину строя и, наконец, не встречая никакого сопротивления, добрались до вспомогательных отрядов африканцев, которые по отступлении обоих флангов остались в центре, значительно выдававшемся и занятом прежде галлами и испанцами. Когда воины, составлявшие этот выступ, были обращены в бегство, и таким образом линия фронта сперва выпрямилась, а затем, вследствие дальнейшего отступления, образовала в середине еще изгиб, то африканцы уж выдвинулись вперед по бокам и окружили флангами римлян, которые неосмотрительно неслись в центр врагов. Вытягивая фланги далее, карфагеняне скоро заперли врагов и с тыла. С этого момента римляне, окончив бесполезно одно сражение и оставив галлов и испанцев, задние ряды которых они сильно били, начинают новую битву с африканцами, неравную не только потому, что окруженные сражались с окружающими, но также и потому, что уставшие боролись с врагом, силы которого были свежи и бодры". Римский историк никак не объясняет, почему вдруг римляне перестали преследовать уже обращенных в бегство галлов и иберов. Ведь передние ряды их пехоты, преследующие карфагенский центр, все равно не могли принять участия в схватке с зашедшими с флангов африканцами. А велитам и пращникам ничего не стоило уйти от тяжеловооруженных неприятельских гоплитов.
Даже если взять наименьшую из приводимых в источниках цифру карфагенских потерь при Каннах – около 6 тысяч убитых, то этому числу должно соответствовать никак не меньше 10 тысяч раненых. В таком случае к концу сражения Ганнибал должен был иметь в строю не более 34 тысяч воинов. Каждый из них за время сражения должен был уничтожить как минимум одного неприятельского воина. И это при том, что реально в рукопашной схватке участвовало лишь меньшинство армии – только бойцы передовых шеренг.