Ганнибал вывел на поле сражения свою армию в шести колоннах. Две средних, общим числом 20 тыс., образовывались более слабой испанской и недавно навербованной галльской пехотой. Их окаймляли две колонны по 6 тыс. африканских испытанных ветеранов. Наконец, фланговые колонны были чисто кавалерийские - на левом фланге вся тяжело вооруженная конница - кирасиры Газдрубала, на правом - легкая, преимущественно нумидийская конница. Всего карфагенская конница насчитывала 10 тысяч коней. Равное с римлянами число легковооруженных маскировало фронт Ганнибала.
Стремясь к уничтожению врага, Ганнибал против могущественного римского фронта - 16 легионов - развернул только 20 тысяч человек своих средних колонн. Эти части должны были выдержать весь римский натиск; на них легли самые тяжелые потери. Большой соблазн был развернуть здесь самую надежную пехоту, так как оттого, выдержит ли она римский удар, зависела возможность выполнения плана Ганнибала - окружения неприятеля. Но Ганнибал не принес в жертву настоящему будущее и не развернул здесь своей африканской гвардии, потери в которой возместить было нельзя. Чтобы дать моральную упругость испанцам и галлам, Ганнибал со своим братом Маго и штабом расположился за ними, в центре: его сравнительно молодые солдаты дрались непосредственно на его глазах. Африканская пехота, предназначенная для удара на оба фланга неприятеля, осталась неразвернутой в колоннах за стыком между пехотой центра и кавалерийскими крыльями и приступила в выполнению маневра по особому приказанию Ганнибала. Левое кирасирское крыло предназначалось для производства решительного маневра; однако, если преждевременно побить и прогнать римскую конницу, когда римская пехота еще не ввязалась в бой, то этим неприятельскому полководцу была бы предоставлена возможность уклониться от боя и отступить. Конница должна была нанести удар в ту минуту, когда пехота уже настолько сблизится, что уклонение от боя станет невозможно.
Начался бой. Газдрубал с кирасирами опрокинул римских всадников, выслал отряд на помощь нумидийцам, которые вели бой с римскими всадниками левого крыла, и заставил и здесь римскую конницу бежать и предоставить легионы их участи. Главная же масса конницы Газдрубала бросилась на тыл римской фаланги и заставила сначала повернуться назад задние шеренги триариев, а потом остановиться и всю фалангу.
На фронте, после короткого боя легковооруженных, римляне решительно атаковали галлов и испанцев, нанесли им большие потери и заставили карфагенский центр попятиться. Личное присутствие здесь Ганнибала удержало галлов от разрыва фронта и бегства. В решительную минуту, под влиянием удара с тыла, римская фаланга остановилась.
Остановка фаланги означала ее гибель. С флангов ударили африканцы, легковооруженные и конница метали с тыла дротики и стрелы. Только крайние шеренги окруженной толпы римских легионеров могли действовать оружием - задние были способны при атаке увеличить натиск, а при остановке фаланги представляли только мишени для летящих камней, дротиков и стрел. Почувствовав победу, энергично теснили повсюду карфагенские наемники; чем теснее сталпливались римляне, тем труднее было им действовать оружием, и положение их становилось безысходнее. После длительного побоища 48 тысяч римлян было убито, 6 тысяч взято в плен, немногие пробились; из остатков 16 легионов римлянам удалось сформировать только 2 легиона. Карфагеняне потеряли около 5700 убитыми и много ранеными; потери легли преимущественно на центр - одних галлов было убито 4000.
Ганнибал решился, располагая вдвое слабейшей пехотой, на маневр охвата обоих неприятельских флангов, на окружение врага. Канны представляют бессмертный пример необыденного сражения, стремящегося к полному уничтожению врага. Маневр был связан с риском - слабому карфагенскому центру приходилось выдерживать всю тяжесть боя до выхода конницы в тыл и удара на фланги.
Римляне были беззащитны против тактики Ганнибала. Если бы у них были выделены крупные части, стоявшие под командой ответственных начальников, которые могли бы быть повернуты на три стороны, покуда в четвертую сторону ломила их фаланга, они. могли бы вырвать у Ганнибала победу. Но в римской милиции не было ни тактических единиц, способных к самостоятельному маневрированию, ни подготовленных частных начальников. Все 16 легионов стояли рядом и представляли одну массу, неспособную к расчлененному маневру. Милиция способна была выполнять только одну схему простой атаки и являлась легкой добычей тактически обученной, возглавляемой опытными генералами, профессиональной армии Ганнибала.