In any case Hannibal's army proved itself perfectly capable of managing a siege in Souther Italy: it stormed and took the citadel of Taras IIRC.
But to my understanding, one reason why Hannibal would not 'simply' march on to Roma and try to take it/starve it out was the fact that either way to take Roma meant to risk his entire army (more so than in any field battle) at odds that would probably be worse than that of Cannae. Roma still had a large population + the survivors of Cannae, and its leaders were still there.
Recall that a similar well-defended city without much of a garrison held out & repeatedly destroyed an assault for a long time agains the well supplied & highly motivated & numerically faaar superior forces of the Romani (much more than Hannibal ever got) later on.
Bookmarks