Эброский договор 226 г. до н.э. позволил Карфагену расширить территорию Испании к югу от реки Эбро, в то время как Рим занял северную часть. Этот договор был нарушен Римом, когда он поддержал город-государство Сагунтум, расположенный к югу от реки. Сагунтинцы напали на соседний город-государство, союзный Карфагену, полагая, что находятся под защитой Рима. Полководец карфагенян в Испании Ганнибал в 219 г. до н.э. быстро разгромил Сагунтум. Он пощадил бы жителей, если бы они "готовы были уйти из Сагунтума без оружия, каждый с двумя одеждами". Ему нужно было оплатить армию и подкупить колеблющиеся собрания в Карфагене добычей из города. Они были более экономны, чем римляне, и Ганнибалу, в отличие от римских полководцев, приходилось бороться с мирными фракциями в собраниях. Жители Сагунтума отклонили его предложение и попытались разрушить город, тогда Ганнибал приказал устроить кровавую бойню. Сенат объявил, что это был casus belli и что Карфаген нарушил договор, заключенный на Эбро. Затем были отправлены римские послы с требованием выдать Ганнибала и доставить его в Рим как военного преступника - типично неприемлемое требование римлян, выдвинутое для того, чтобы Рим мог заявить, что отказ сделал эту войну "справедливой". Полибий обвиняет обе стороны, как и большинство современных историков. Натан Розенштейн говорит, что ни Карфаген, ни Рим не хотели войны, но ни один из них не отступил, а Харрис обвиняет римский сенат в том, что он использовал сагунтинцев, чтобы спровоцировать Ганнибала на войну. Однако провокация, похоже, была взаимной.
Вторая Пуническая война продолжалась семнадцать лет, до 201 г. до н.э. Ганнибал, прекрасно зная о больших потенциальных резервах Рима, нанес стремительный удар по римскому сердцу. Он переправил своих солдат и слонов из Испании через Альпы в Италию. Его поддержали несколько кельтских племен, и он попытался привлечь на свою сторону италийских союзников Рима, отпустив всех пленных и пообещав восстановить свободу тех, кто заключил с ним союз. На пике его могущества в Италии около 40% италийских городов обещали ему свою верность, хотя большинство из них были более осторожны в своих действиях, стремясь не вызвать гнев Рима. После великой победы Ганнибала при Каннах в 216 г. до н.э., в которой, по словам Ливия, было убито 50 тыс. римлян, Ганнибал сказал своим пленникам, что "он ведет с римлянами не войну на истребление, а борьбу за честь и империю. Что его предки уступили римской доблести и что он стремится к тому, чтобы другие, в свою очередь, были вынуждены уступить его удаче и доблести вместе с ним". Поэтому он разрешил пленникам выкупить себя".
В этот момент Ганнибал не пошел прямым маршем на Рим, а предложил переговоры, и это решение иногда считают его самой большой ошибкой, поскольку Рим никогда не вел переговоров. Ливий приводит слова одного из его генералов, призывавшего к немедленному походу на Рим. Ганнибал ответил: "Я одобряю твое рвение, но мне нужно время, чтобы взвесить предложенный тобой план", на что полководец ответил: "Конечно, ни один человек не был благословлен всеми дарами Бога. Ты, Ганнибал, знаешь, как одержать победу, но не знаешь, как ею воспользоваться". Однако Ганнибал, вероятно, рассчитывал, что взятие Рима потребует длительной осады, грозящей трудностями со снабжением, в то время как его войска останутся неподвижными и уязвимыми для нападения. Он хотел не уничтожения Рима, а признания равного положения и независимости Карфагена. Канны также находятся на расстоянии более трехсот километров от Рима.
Союз Ганнибала с македонским царем Филиппом V в 215 г. до н.э. оказал давление на Рим, который оказался перед угрозой войны на два фронта. В течение пятнадцати лет Ганнибал совершал походы по Италии, опустошая римские территории. Римляне прибегали к тактике "фабианского промедления", прославленной полководцем Фабием Максимом. Ганнибал был уязвлен поражением своего брата Гасдрубала, который привел в Италию подкрепление. Когда Рим направил легионы для отпора карфагенским союзникам в Испании и Нумидии, Ганнибал оказался в затруднительном положении, не имея возможности получить подкрепление или защитить своих итальянских союзников. И снова решающую роль сыграли римские союзники и мобилизационная политика. Ганнибал также столкнулся с фракцией в Карфагене, которая противилась отправке ему подкреплений. Коммерческие инстинкты карфагенских лидеров побуждали их направлять больше ресурсов на иберийские кампании, чем на помощь Ганнибалу в Италии. Обладая экономическими ресурсами Испании, члены этой фракции полагали, что смогут восстановить равновесие сил с Римом. В конце концов Ганнибал был отозван в Карфаген и в 202 г. до н.э. проиграл последнюю битву с римлянами при Заме в Африке. После этого его правительство запросило мира и отправило его в ссылку. Карфаген, в отличие от Рима, не подчинил все свои источники власти военному делу. Торговые и военные расчеты оставались разными. Перед лицом Рима колебания между ними могли привести к гибели.