For some reason Hannibal never marched on Rome. Nobody really knows why. Maybe he didn’t think he could take on the city but there was really nothing in his way. As his brother put it, (paraphrased) “Hannibal knows how to gain a victory, but not how to use it”
The Romans were stubborn and defeat was not in their vocabulary. You can thank Scipio (the younger) Africanus for saving Rome. The Senate decided to send an expeditionary force to Spain but no one would take the job. At 24 Scipio took the job and showed himself to be a brilliant tactician. Carthage couldn’t afford to lose their assets in Iberia so they wouldn’t resupply Hannibal so he had to send his brother Hasdribul to fight Scipio and the ruling oligarchs in Carthage cut off Hannibal. Hannibal is an enigma. One of the greatest generals in history driven by hate but not a strategic thinker. Are you familiar with the meeting of Hannibal and Scipio with Antiochus III. Fascinating story?
Goldsworthy has a good modern look at this battle. Likewise
https://www.amazon.com/The-Ghosts-of-Cannae-audiobook/dp/B003Y55KOO/ref=sr_1_2?dchild=1&keywords=cannae&qid=1620835175&s=books&sr=1-2
“The Ghosts of Cannae” is a good book on the aftermath by O’Connel