Mais la République trouve en la personne d'Hannibal un adversaire redoutable, un homme politique et militaire de génie. Celui-ci décide d'attaquer par voie terrestre avec un contingent de hommes et des éléphants de guerre. Une longue marche leur fait traverser l'Hispanie, le sud de la Gaule, puis les Alpes. Hannibal remporte alors dans le nord de l'Italie une série de victoires et avance vers le sud en traversant les Apennins. Là, sur les rives du lac Trasimène, il écrase une nouvelle fois une armée romaine le 23 juin 217 av. J.-C. Le Sénat lève une grande armée, mais Hannibal l'anéantit à Cannes, en août 216 av. J.-C. Les villes alliées à Rome dans le sud de l'Italie (mais dans le sud uniquement) se rallient à Hannibal. Celui-ci s'installe à Capoue.