Yeah, because winning field battles and being able to besiege a major city the thing right?
Let's not forget that the Romans managed to reorganised their army post-Cannae and have huge walls to make it difficult for people to capture Rome. Hanibal's army can hardly march into Rome expecting an empty gate.
It is important to note that even after the battle of Cannae, the Roman army was NOT completely destroyed. Such is their manpower advantage that they can still have enough troops to make life miserable for Hannibal's army even after they lost 80,000 men.
Keep in mind that Hannibal was operating in enemy territory, with zero reinforcements, and only the supplies that could be gained by living off the land.
I think it's perfectly possible to get a complete conquest of Rome if you could get the Carthaginian government to realize that it has no choice but to place its trust in Hannibal. If they decide to use the Navy to help him out, and send him supplies, reinforcements, and siege equipment, Hannibal could have taken Rome under the right circumstances.
If the Carthaginian state bends all its capability towards Hannibal's war, he is more than capable of achieving victory.