한니발은 기원전 247년 무렵 카르타고의 장군 하밀카르 바르카의 아들로 태어났다. 아홉 살에 아버지를 따라 이베리아로 건너가며 로마의 친구가 되지 않겠다고 맹세했고, 군영에서 자라 매형 하스드루발 밑에서 기병을 이끌었다. 기원전 221년 병사들의 추대로 이베리아의 지휘관이 되었고 기원전 219년 사군툼을 함락했다. 기원전 218년 피레네와 론강과 알프스를 넘어 이탈리아로 들어가 트레비아, 트라시메누스, 칸나이에서 로마군을 잇달아 꺾었다. 열여섯 해 동안 이탈리아에 머물며 군대를 흩어지지 않게 지켰으나 기원전 202년 자마에서 스키피오에게 졌다. 그 뒤 카르타고의 최고 관직 수페테스로서 재판관 제도와 나라 살림을 고쳤고, 로마의 압박으로 망명해 안티오코스와 프루시아스의 궁정을 떠돌다 비티니아에서 독을 마셨다. 죽은 해는 사료마다 기원전 183년에서 181년으로 다르다.