Пресрещнат от римляните още в подножието на Алпите, Ханибал преодолява съпротивата им и за две години прекосява Италия надлъж и нашир, печелейки три големи сражения благодарение на отличната си кавалерия и на тактиката си, основана на особеностите на терена и на познанията за психологията на противника. След победата при Требия през декември 218 г. пр.н.е. той вдига на оръжие срещу Рим всички галски племена в Северна Италия. На следващата пролет Ханибал преминава Апенините, примамва в засада и избива войската на консула Гай Фламиний на брега на Тразименското езеро. Възпаление, получено при тежкия преход през блатистата равнина на Арно малко по-рано, му струва зрението на едното око. След поражението на Фламиний римляните за известно време избягват мащабни стълкновения, но през 216 г. пр.н.е. дават най-голямата битка от началото на войната. В равнината край крепостта Кана в областта Апулия Ханибал обкръжава армията им, която със своите над 80 000 бойци надвишава близо два пъти броя на собствените му воини, и я унищожава.