Hannibal has been criticized for not marching on Rome after his victory at Cannae, but it’s doubtful that he could have captured the city, given the length of the city walls and the size of the forces at his command. As long as the Romans had armies in the field, Hannibal could not win the war.
At Cannae, Hannibal destroyed Rome’s last army. Taking Rome would have certainly been a long siege, up to ten years. Most of the people in Italy then were Greeks in the South and East and Celts in the North, and they didn’t like Rome at all.
It’s a great debate.