This fact always confused me and I can never comprehend why they would do this?
One of the main reasons Hannibal was able to defeat the Romans in battle was because he chose the battles, he would make sure he had every advantage he could get. This is why Carthage was able to defeat the roman army of 86k at the Battle of Cannae with only 56k men. And it's entirely possible that Hannibal could of marched on Rome itself after the battle and gone for the gold. However he didn't march on the city itself, and Rome employed the Fabian stategy, which in essence was just not fighting a battle and waiting for disease and malnutrition to wear down your enemy.
I believe it boiled down to manpower. Even though Hannibal had won a string of victories he simply did not have the resources to take the city of Rome itself. Correct me if I am wrong but Lazenby wrote that Rome could have raised am army of ~80,000, a sizable force after multiple defeats. Sorry for the lack of specific details. I am in class right now but I'll take a look at my book when I get home.
Source: Lazenby's The Punic Wars