The Roman army of the Second Punic War was still a citizen militia. Hannibal's troops were largely mercenaries, and therefore professional. Edge to Hannibal. The Roman army would become professionalized over the next century, but it's important not to project the legions of the late Republic and the heyday of the Empire back into the earlier period.
The real Roman genius lay in their ability to transform defeated neighbors into allies and eventually citizens. And of course, the Romans simply refused to accept defeat. No matter how many of them you killed, they just organized new legions and came at you again.