Well, alot of it was down to morale.
Prior to the battle it is important to recall that Hannibal used hit and run tactics on the roman camp the day before to reduce their supplies of food and water, Therefore the roman army was dehydrated the next day.
The romans, having fought head on with the carthaginians cut a path in the center were Hannibal's least experienced men were, he had his strongest on the wings, the more experienced men were able to surround the roman army as they dug deeper into the carthaginian center, one of the consul's was also killed so without an acting commander the chain of command would begin to break.
Now picture yourself as a roman soldier, you know you are now surrounded by the enemy, but you dont know how many surround you, there could be a ring a thousand men deep around you for all you know.
Instinct tells us to run when we know there is no chance of winning a fight, roman morale would of decayed and eventually would of broke, soldiers may have begun to try to run, ranks were broken and the carthaginians were able to exploit this enourmously.
Hannibal would actually of won the second punic war had he marched on rome directly instead of choosing to face another roman army in the field.