- His army was too small to either assault or securely besiege Rome
- Rome itself remain defended by two legions and a large, conscriptable population
- Marching on and laying siege to Rome was beyond his logistical capacity
- He cannot realistically defeat Rome while her Latin and Italian allies remained loyal
The traditional analysis is that Hannibal probably could not have taken Rome, and perhaps more importantly, knew that he couldn't, despite his brilliant victories in the field. A complementary analysis is that in recognition of this, his preferred strategy is to disrupt Rome's alliances.
Cities typically fall in one of three ways: being starved into submission, being taken by force, or outright surrendering. Rome was adamantly against peace, as evidenced by their rejection of Hannibal's terms (and probably, due to knowing their own strength). A successful siege was similarly unlikely; despite her devastating defeats, Rome remained very populous with plenty of manpower. While Roman allies in Italy remained loyal, Hannibal's army was too isolated and small to take on Rome on its own.
The prolific Punic Wars writer, Professor John Francis Lazenby from the Newcastle University, offers some convincing arguments about the difficulties Hannibal would have faced at Rome:
Lazeby advances several reasons why Hannibal did not march on Rome: Rome was 400 kilometres away, and there were two legions in the city to defend it, as well as the male members of the population; Rome still had troops and could raise others; whether Hannibal could take Rome quickly was uncertain and a siege could drag on; also Hannibal's aims were to detach the Latin and Italian allies from Rome. Hannibal did not want a war to the death with Rome; the war was about dignitas and imperium, and he proposed peace, though his ambassador to Rome, Carthalo, was turned back by the orders of Marcus Junius Pera, dictator for 216.
- Dillon, Matthew, and Lynda Garland. Ancient Rome: A Sourcebook. Routledge, 2013.
This is AFAIK the predominant view. There are other viewpoints on why Hannibal couldn't take Rome, but I doubt many think that Hannibal had a moment of insanity and chose not to march on Rome for no good reason. For example, Professor John F. Shean argued that Hannibal was limited by logistics.
In any case it is unlikely that Hannibal could have realistically considered marching on Rome from Cannae. Shean convincingly argues that Hannibal's campaigns were largely dictated by his logistical situation, and that after Cannae his army scarcely had supplies for a few days, let alone a three-week march. If he had made it to Rome the subsequent siege could have lasted for months, if not years, posing a logistical nightmare since his army's opportunities for foraging would have been limited by being permanently stationed at one point. Even if Hannibal had wanted to follow up his victory at Cannae by marching on Rome, it is incredibly unlikely that he would have been able to do so.
- Daly, Gregory. Cannae: The Experience of Battle in the Second Punic War. Psychology Press, 2003.
(Refer to map below)
After the Battle of Cannae (2 August 216 BC), Hannibal went immediately to Compsa (1), where he set up a base and took some of forces and sent them on a mission to collect allies in that area. He then gathered his main army and went to Naples (2) where he was hoping to take control of a seaport. When he got to Naples he found it had very strong walls and was determined to resist him, so he passed it by and went to Capua (3), a large city. At Capua the city agreed to ally with him and he occupied the city, although there were dissenters. He then turned south to reduce Nola (4), a smaller city. Nola submitted to Hannibal. However, the Roman Praetor Marcellus (blue dots) coming from Cassino caused Capua to swing back to Rome, then shadowed Hannibal to Nola. Hannibal then abandoned Nola and went first to the coast to see if he could get access to a port, but forces in Naples had become even stronger, so he went on to Nuceria (5), which he besieged and eventually captured by force, burning the city to the ground. Hannibal then returned to Nola (6), which Marcellus had occupied, and invested it, but Marcellus surprised him by sallying forth from the walls unexpectedly, killing a large number of Carthaginians, then retreating back within the walls of the city.
Having suffered this defeat Hannibal left off of Nola and went north to Acerra, which resisted him. He took the city, plundered it and then burned it. He then continued north to Capua and then to Cassino (7), a small town which was a Roman stronghold. He besieged this town, but could not take it (partially because the Volturnum River was part of the defenses), and winter was approaching so he retreated back into Capua where he made preparations to spend the winter.
Thus, Hannibal's campaign of 216 was over with him unable to even take Cassino, much less approach Rome.
So, you can see, Hannibal made every effort to advance onto Rome, but was unable to get past Cassino in 216, despite his success at Cannae.
Hannibal's troops were not numerous enough (about 40,000 after the battle) to have a hope of taking Rome, which had a very large population (somewherere around 200,000) and was well fortified (the Servian Wall) and surrounded by allies who could launch surprise attacks against a besieging army.
The only real chance Hannibal had was turning those allies against Rome - which is exactly what he tried to do, for years, without decisive success.
Romans pulled on him the same trick the Greeks from Syracuse pulled on Carthage some 200 years prior when Carthage was laying siege to Syracuse. The Syracuse tyrant took almost all the men he could spare, sailed to Africa and rampaged around Carthaginian lands which forced the force near Syracuse to withdraw to face him, thus saving the city. Same thing, just Romans won the battle in Africa and Rome was never directly threatened (although Hannibal was "at the gates" he never attacked).
Simply, he did not have the manpower and resources to do so. He could only hope to turn all Latin people to his side and to gain a port so he could get reinforcements. It's amazing what he was able to do with such a little force deep inside enemy territory. Romans were also not sitting on their asses, but were constantly following him around, harassing and taking back cities he just left.
The thing that interests me more is why the Greeks didn't seize the chance and ally with Carthage to finish Rome off, seeing as Rome was a threat to all of them. Maybe they didn't take them seriously yet.
This is all speculation and since Carthage was literally wiped off the map eventually by Rome we can only draw inferences as we don't know what the strategic plans of Carthage were...if any. My educated guess is that Hannibal and his allies and Army had no intention of taking Rome without a follow on attack by a second Carthaginian Army or at least dramatic support from the "vaunted" Carthaginian Navy...neither of which Hannibal nor his Allies received.
His Army and Allies lived well in the Roman Countryside and Rome and her Allies certainly did not. But Rome then attacked North Africa not Hannibal's Army in Italy forcing him and ultimately all of his Army and Allies off the Italian Penninsula.
To answer the original question, let's set up a model of how the siege would have gone and compare it to a model of a field battle.
Pretend for a minute that Hannibal had a 10 man Army in the field against a comparable Roman Force. That 10 man Army would be deployed in a contiguous formation with lateral lines of communication to all parts of the force (in other words, relatively simple to control). Further more they would either be deployed to defend or oriented against a single piece of key terrain. Most importantly, all 10 men are available to defend their key terrain or attack the key terrain against which they are oriented. Hannibal was able to direct his full capability to such combat. It's a 10 on 10 fight with Bill Belicheck coaching the Carthaginians and Greg Schiano coaching the Romans.
PRetend for a minute now that Hannibal has the same 10 men against the Romans inside Rome. Now the romans have a comparable trained military and 20 or 30 more peasants, blacksmiths, slaves, etc who can still swing a sword, hurl rocks, dump boiling oil, etc. To assault these 30 or 40 pax inside their wall Hannibal now has to release 2 of his 10 to build and defend lines of contravallation (fortifications protecting his siege force), 2 of his 10 to scout for enemy reinforcements beyond the contravallation, 2 of his 10 to picket possible escape routes from the Roman wall, and 2 of his 10 build trenches, siege machines (if they are capable), and foraging. Hannibal now has 2 men to assault the Romans 30 or 40 inside the wall.
Hannibal could dominate in the field because his Army was a field Army. He was a maneuver specialist. Siege warfare is not maneuver warfare. He could nor more lead a successful siege against Rome then Hitler could mount an amphibious invasion of Britain.
The answer to this question is very simple. He never thought of taking Rome, he always thought after Rome suffered so many defeats, the Battle of Cannae the worst, he only thought that Rome will Sue for peace after so many defeats, many say the reasons why he didn't attack Rome was his army too small, or he was afraid of soldiers protecting Rome, what are you talking about? In every battle Hannibal's army was smaller in size than the Roman army and he still won because he was a genius and in every battle he had a surprise for Romans, the Battle of Lake(ambush) and the Battle of Cannae show that... So the answer is he could take Rome, but he didn't want too because he thought Rome would sue for peace.