Но Ганнибал так и не сделал даже попытки перейти от угрозы Риму к его атаке. Он пошел иным путем. Дело в том, что в то время только одна треть Италии представляла собой полноправную территорию римской республики, две трети представляли подчиненные, еще не забывшие своей былой самостоятельности. Именно к ним и обратился Ганнибал, подчеркивая, что он явился в Италию не для завоевания, а для освобождения народов. Пленных италиков Ганнибал отпускал на родину, чтобы они могли разносить вести о его могуществе и благородстве, а пленных римлян продавал в рабство тысячами.
В конце июля 216 года до н. э. Ганнибал быстрым маршем провел 50 000 своих солдат в Канны и захватил там римские склады с провиантом, бросив вызов армии римлян, стоявшей у реки Ауфид (Офанто).
2 августа, в день, когда командование у римлян перешло к Теренцию Варрону, Ганнибал, несмотря на превосходство врага, был уверен в победе. Но ординарной победы Ганнибалу было недостаточно – ему нужно было полное уничтожение римской армии, и эту цель он отчетливо поставил перед собой.
Он вывел на поле сражения свою армию в шести колоннах. Две средних, общим числом 20 000, образовывались более слабой иберийской и галльской пехотой, которым суждено было выдерживать основной натиск римлян. Чтобы морально поддержать этих воинов, Ганнибал со своим братом и штабом расположился за ними. Их окружали две колонны по 6000 африканских испытанных ветеранов. Наконец, фланговые колонны были чисто кавалерийские: на левом фланге – тяжело вооруженная конница – «кирасиры» Гасдрубала, на правом – легкая, преимущественно нумидийская конница. Всего 10 000 всадников. Равное с римлянами число легковооруженных всадников маскировало фронт Ганнибала. Боевое расположение получалось в виде подковы.
Римляне – 55 000 гоплитов, 8000 легковооруженных, 6000 всадников, а также 10-тысячный гарнизон, оставленный в лагере, – были построены в особенно глубокую фалангу (манипулы – 10 человек по фронту, 12 в глубину), в общем не менее 34 шеренг. Такая глубина вызывалась стремлением развить максимальный натиск и не слишком затруднять наступление непомерной длиной фронта пехоты, которая растянулась на довольно большое расстояние. Конницу распределили по флангам.
Само поле сражения, избранное Варроном на северном берегу Ауфида, представляло широкую равнину, ограниченную на юге рекой, на севере – густым кустарником, защищавшими фланги римлян от охватов неприятельской конницей.
Когда начался бой, Гасдрубал с «кирасирами» опрокинул римских всадников и выслал отряд на помощь нумидийцам, которые вели бой с римскими всадниками левого крыла. Главная же масса конницы Гасдрубала набросилась на тыл римской фаланги и сумела потеснить ее.