이에 한니발은 로마군과의 결전을 노리고 다시 북상했지만 로마군은 지금까지와 마찬가지로 전면전에 응해주지 않았다. 그래서 한니발은 코끼리 부대를 앞세워 로마군의 카푸아 포위망을 와해시키려고 시도했다. 하지만 로마군은 포위망이 뚫리는 순간, 모든 것은 끝난다는 것을 본능적으로 잘 알았다. 목숨을 걸고 필사적으로 포위망을 지켜내면서 한니발 부대는 난관에 부딪혔다.
이때 로마군이 얼마나 필사적이었는지에 대해서는 로마군을 지휘관인 두 로마 집정관 중 한 명이 카르타고군의 창에 관통상을 입을 정도였다는 점에서 짐작할만하다. 이렇게 로마군의 필사적인 방어에 포위망이 풀리지 않자, 한니발은 로마를 직접 공격할 것이라는 거짓 소식을 퍼트리도록 지시한다. 그렇게 하면 카푸아를 둘러싸고 있던 로마군들이 로마를 방어하기 위해 카푸아에서 물러날 것이라고 기대한 전략이었다.
하지만, 그의 기대처럼 로마군은 바보 같은 짓을 반복하지 않았다. 로마군은 절대 포위를 풀지 않았다. 사실 그들이 한니발의 전략을 꿰뚫고 있었던 것이라기보다는 로마르 둘러싼 매우 견고한 성벽에 의한 방어를 잘 알고 있었기 때문이었다. 로마를 둘러싼 견고한 성벽이 있었기에 로마군은 안심하고 한니발 군의 포위를 풀지 않고 계속 압박할 수 있었다.
결국 카푸아는 다시 로마에게 함락되고 만다. 이때 카푸아의 배신을 주도했던 카푸아 원로원 의원들은 대다수가 자살했으며, 살아남은 의원들도 로마군에 의해 처형되는 최후를 맞았다. 그리고 배신을 했다는 본보기로 카푸아는 로마의 동맹국에서 속주로 격하되게 된다.
로마가 카푸아를 탈환한 후 이탈리아 전황은 크게 격변하였고 이제까지 한니발 군이 유지했던 우위는 모두 역전되기 시작하였다. 타렌툼이 가장 먼저 친로마계의 정치가들이 반란을 일으켜 로마의 동맹에 복귀하게 된다. 시칠리아의 시라쿠사도 마르쿠스 클라우디우스 마르켈루스가 이끄는 로마군의 포위 공격을 받으면서 2년 만에 점령당했다. 이 와중에 시라쿠사를 구원하기 위해 상륙한 카르타고군은 또 어이없이 전멸당하고 만다.
스키피오의 흉상
설상가상으로 기세 등등해진 푸블리우스 코르넬리우스 스키피오가 히스파니아의 카르타고군을 궤멸시켰다. 히스파니아에 남아있던 카르타고군은 한니발의 막내동생 마고와 하스드루발 기스코가 지휘하며 여전히 7만이 넘는 병력을 보유하고 있었는데, 그들은 마지막으로 스키피오의 4만 8천 로마군과 전면전을 벌인다. 하지만 그들은 스키피오라는 신성(新星)의 벽을 넘지 못하고 일리파 전투에서 전멸한다.
이로써 히스파니아의 카르타고군은 그 많던 병력이 모두 공중분해되어버리고 만다. 로마군의 새로운 명장의 전설이 탄생된 일전이었다. 스키피오가 일리파 전투에서 거둔 군사적 성과는 칸나이 전투와 비견될 정도로 엄청난 것이었다.
하스드루발은 한니발을 지원하기 위해 한니발처럼 갈리아를 거쳐 알프스 산맥을 넘었다. 한니발이 죽을 고생을 하며 넘었던 그 루트를 다시 선택했던 이유는 하나였다. 일단 혹한이 몰아친 겨울도 아니었고, 무엇보다 한니발이 그 길을 지나며 주변의 갈리아족들을 대부분 우군으로 포섭해놓았기 때문에 그리 힘겹지 않게 그 길을 따라가기만 하면 되었기 때문이었다. 심지어 하스드루발은 우호적인 갈리아인들로부터 추가로 병력 지원까지 받았다. 하스드루발의 병력은 도착할 즈음에는 5만으로 늘어 있었다.
그러나 한니발은 여기서 마지막 지원받을 기회를 스스로 날려버리는 치명적인 실수를 저지르고 만다. 자신의 경험에 비춰 계산하여, 하스드루발의 지원군이 합류하는 데 오래 걸릴 것이라고 생각하여 북상의 속도를 늦췄던 것이다. 그 바람에 하스드루발의 전령이 한니발에게 가던 길에 로마군에 사로잡히게 된다. 하스드루발의 편지를 입수한 클라우디우스 네로는 바로 정예병 보병 6천 명과 기병 1천 기를 이끌고 신속히 하스드루발의 진격로를 막았다.
거기에 리비우스의 로마군 3만여 명까지 합류해 상당한 정예군이 하스드루발을 저지했다. 양군은 북이탈리아의 메타우루스 강변에서 부대껴 격전을 벌이게 된다. 모든 것을 준비하고 있던 네로에 의해 카르타고군은 궤멸당하고 하스드루발도 그 전투에서 전사하고 만다. 결국, 마지막 보급과 지원군도 한니발에게 당도하지 못하는 불운이 이어졌던 것이다.
지원군이 전멸했다는 소식이 전해진 이후, 한니발의 전황이 워낙 불리해져서 한니발을 지지했던 그 많던 이탈리아 도시들이 한니발을 배신하고 로마를 지지한다고 돌아서고 말았다. 결국 한니발은 이탈리아의 장화 발 끝에 해당하는 브루티움까지 몰리게 된다.
전세가 크게 호전되자 로마 군단의 사령관들은 그 기세를 몰아, 이제 수세에서 전략을 바꿔 카르타고 본토 공격을 계획했다. 그러나 의외로 원로원 측은 이 전략에 회의적이었다. 원로원의 걱정은 ‘만일 적지 한가운데 쳐들어갔다가 패배하게 되면 뒷감당을 어떻게 하겠는가?’라는 것이었다.
실제로 제1차 포에니 전쟁에서 집정관 레굴루스가 카르타고 원정에서 실패한 사례도 있었기 때문에 괜한 기우(杞憂)가 아니었다. 하지만 스키피오는 자신만만하게 공격 의사를 다시 타진했고, 그 자신감을 뒷받침할만한 전공을 히스파니아에서 확실하게 증명한 상태이기도 했다. 결국 원로원은 이례적으로 당시 불과 30세였던 그를 시칠리아 담당 집정관으로 임명해준다.
이는 로마가 정규군을 편성해 주진 않겠지만, 스키피오가 직접 군대를 모집하는 것은 허용하겠다는 일종의 절충책이었다. 그러자 그간 스키피오가 전투에서 올린 명성을 듣고 다수의 신병들이 그의 휘하로 모여들었다. 그래서 스키피오는 비교적 손쉽게 상당한 숫자의 군대를 재편성할 수 있었다.
스키피오의 침공이 임박하자 카르타고는 본국의 위험을 직감하고서는 더욱 적극적으로 한니발에게 물자 보급을 시도했지만 그 시도는 번번이 실패로 돌아갔다. 가장 근본적으로, 카르타고군은 바다를 막고 있는 로마 해군의 해상봉쇄조차 뚫을 수 없었던 것이다. 간신히 이 감시를 피해 한니발의 동생인 마고가 기적적으로 이탈리아 북부 제노바에 상륙한 적이 있었지만, 결과적으로 지상에서 기다리고 있던 그곳 로마군에 막혔던 것을 감안하면 결코 쉬운 일이 아니었던 것이다.
스키피오는 아프리카에 상륙해 카르타고 침공을 본격적으로 개시했다. 그는 마사에실리족의 왕자 마시니사와 과거 카르타고에 반란을 일으킨 전력이 있었던 마실리 부족의 왕 시팍스를 동맹군으로 회유했다. 시팍스는 처음에는 스키피오와 동맹을 맺었으나 카르타고의 공작으로 카르타고인 미녀를 아내로 맞은 뒤 카르타고 편에 다시 붙은 인물이었다. 이후 스키피오는 도망쳐 나온 마시니사와 동맹을 맺고 우티카에서 시팍스, 카르타고 연합군을 격파해버렸다. 하스드루발 기스코는 시팍스와 함께 바그라데스에서 다시 한번 대군을 이끌고 스키피오와 마시니사 연합군 상대로 복수전을 시도했지만 역시 참패를 당하고 말았다.
이후 스키피오는 누미디아 수도 키르타를 공격해 완전히 함락시켰다. 그는 시팍스를 잡아가두고 마시니사를 누미디아 왕으로 앉혔다. 이로써 스키피오는 누미디아를 확실히 자기 편으로 만들었고, 누미디아 기병대까지 공급받을 수 있게 되었다.
스키피오가 연이어 승리를 거두며 압박을 해오자 카르타고는 스키피오와 강화를 맺었다. 이때의 강화 조건은 그리 굴욕적인 수준은 아니었다. 다른 식민지를 건드리지 않고, 그저 제해권(制海權)만을 로마에 양도하는 조약이었다. 조약이 이토록 관대했던 이유는 다른 이유가 없었다. 한니발이 상당한 병력을 거느리고 이탈리아에 아직 주둔하고 있었기 때문이었다. 사실 이때 카르타고는 그야말로 멸망 직전까지 몰렸다.
사방의 식민지는 로마에게 박탈당한 상태였고, 핵심 동맹국이던 누미디아마저 로마에 붙었으며, 아프리카 영토까지 모두 날아갈 상황이었다. 하지만 스키피오는 단지 한니발이 철수해주는 것만으로 아프리카에서 아예 손 떼겠다고 제안했다. 그만큼 로마가 한니발 군단에 대해 가진 두려움은 큰 것이었다.
당시 카르타고 한니발 부대
여기서 한니발의 조국은 스키피오의 조국에 비해 너무도 나약하고, 비겁한 결정을 하게 된다. ‘우리는 이번 전쟁과 무관하며, 모든 책임은 한니발 개인에게 있다.’면서 로마에게 거액의 배상금을 매년 바치는 한편 한니발을 본국으로 소환하겠다고 결정을 내린 것이다. B.C. 203년, 한니발은 결국 연이은 전투에 승리하고서도 끝을 내지 못한 채 이탈리아를 떠나 카르타고로 향하는 배에 올랐다.
그런데 정작 한니발이 아무런 피해도 없이 건재하다는 소식을 듣자 카르타고 원로원의 과격파가 일방적으로 다시 전쟁을 결정했다. 전쟁을 속개하는 것도 모자라 강화를 체결하고 돌아가던 로마 사절단을 기습해 살해하기까지 하는 강수를 둔다. 카르타고 온건파 총수 한노는 이들을 비겁한 데다가 어리석기까지 하다며 크게 질책했다.
하지만 과격파는 한니발이 곧 돌아올 테니 걱정이 없다며 큰소리만 쳤다. 그들은 너무 감정적이었고, 지나치게 한니발에게만 의존하였으며, 전략적인 식견이라고는 전혀 없는 입만 살아있던 진정한(?) 정치꾼에 불과했던 것이다.
한니발은 동생 마고와 함께 귀국했다. 그러나 마고는 귀국 도중 이전에 입은 부상이 악화되어 조국의 땅에 도착하자마자 사망하고 만다. 한니발의 귀국 사실에 고무된 카르타고 원로원은 과격파가 실권을 이미 장악한 상태였다. 로마 사절단 공격을 비난한 온건파들도 더 이상 과격파들의 전횡을 막을 길이 없었다. 이들은 강화를 일방적으로 파기하고 한니발에게 군대 지휘권을 모두 맡겼다.
그런데 정작 힘겹게 고국으로 돌아온 한니발은 전쟁의 승패는 이미 났고 로마와의 강화를 맺어야 한다고 생각하고 있었다. 그래서 그는 원로원으로부터 이 소식을 듣자 조약을 복구해야겠다고 생각했다. 그는 로마군과 본격적으로 싸우기 전에 스키피오에게 회담을 요청했다. 그는 다시 한번 강화를 요청했다.
하지만 스키피오는 한니발의 제안을 단칼에 거절했다. 이전의 강화를 일방적으로 파기한 것은 카르타고였기 때문에 단단히 화가 난 상태였다. 스키피오는 카르타고가 다시 협상을 요청하는 것은 도의에 어긋날뿐더러 더 이상 카르타고를 믿을 수 없다며 한니발의 제안을 거절해버렸다. 그러자 한니발은 카르타고 강경파의 잘못을 인정하고 자신이 카르타고군 총사령관으로서 조약을 직접 보증하겠다고 다소 굴욕적인 자세도 감수하며 다시 강화를 요청한다.
그는 카르타고의 본토만 지켜낼 수 있으면 해외 식민지 대부분을 로마에 양도할 수도 있다는 추가 조건까지 덧붙였다. 스키피오는 한니발이 진심으로 강화를 원한다는 것과 카르타고 내부의 파벌 싸움 때문에 불가피하게 일이 틀어졌다는 사실을 그제서야 모두 알게 되었다. 그러나 사실 스키피오의 입장이나 위치는 독단적으로 조약을 맺을 수 있는 입장이 아니었다.
그 와중에 로마의 수송선이 카르타고인들에게 약탈되는 사건이 벌어지자, 로마 원로원은 스키피오에게 카르타고를 쓸어 버리라고 명령했다. 그렇게 결국 스키피오와 한니발의 부대는 B.C. 202년, 북아프리카의 자마에서 양국의 사활을 건 최종 결전을 벌이게 된다. 당시 스키피오의 나이 33세, 한니발의 나이 45세였다.
당시 카르타고의 코끼리 부대
카르타고는 가용 병력을 최대한 긁어모아 군을 재편성했다. 카르타고의 용병들과 시민병들은 질적으로는 열악하기 그지없었지만, 한니발의 직속부대 15,000명만큼은 지중해 최강의 보병대였다. 한니발이 귀환할 때 선박이 부족해서 병력을 가려 뽑아야 했으므로, 결과적으로 이 15,000명은 한니발의 병력 중 가장 우수한 일당백의 병사들이었다.
그러나 선박이 부족하여 병력이 모두 돌아오지 못했던 것처럼 카르타고에는 절대적으로 기병이 부족했다. 당시 카르타고의 주요 동맹국이었던 누미디아가 배반을 해서 더 이상 누미디아 기병대도 제공받지 못하는 최악의 상황이었다. 일설에 카르타고의 신성 기병대가 있었지만 정치적 이유로 투입되지 못했다는 설은 전혀 사실과 다르다. 당시 카르타고 원로원은 한니발을 적극 지지하고 있었고 로마와의 전쟁에 승리할 수 있다고 착각에 빠져 있었다.
그래서 한니발에 대해 정치적 방해공작을 할 세력은 최소한 카르타고 내에는 없었다. 당장 자신들의 목숨이 경각에 달려 있던 시민들도 만약 그런 방해가 있었다면 가만히 두고 보지만 있지는 않았을 것이다. 하스드루발 기스코도 스키피오에게 연달아 패한 후 시민들에게 맞아 죽을까 봐 패전 후 스스로 목숨을 끊을 정도의 분위기였다는 것을 감안하면 기병대가 있었음에도 지원할 수 없는 일이란 있을 수 없었다.
결론적으로 정리하자면, 한니발이 당시 보유한 병력은, 제대로 된 기병대 병력을 갖추지 못한, 말 그대로 카르타고에서 끌어모을 수 있는 최대치의 군사력이었다고 봐야 옳다.
한니발은 오합지졸까지 끌어모아 일단 약 5만의 병력을 동원하여 수적으로는 스키피오에게 다소 앞섰다. 그러나 한니발의 전술에 필수 요소였던 누미디아 기병대가 이번에는 로마군 편에 서 있었다. 한니발은 코끼리 부대가 그 공백을 메워 주기를 기대했으나, 로마군의 화살과 투창 세례에 놀란 코끼리는 뒤로 돌아서 카르타고군을 짓밟는 패착의 원인을 제공하게 된다. 전투는 로마의 승리로 돌아갔고, 카르타고의 희망도 꺼졌다. 이는 로마군이 한니발에게 그동안의 단 한 번도 이기지 못했던 굴욕을 완벽하게 되갚은 것이었다. 이 전투로 카르타고의 패전은 확정된다.
자마 전투에서 한니발이 패배한 뒤, 카르타고는 훨씬 가혹한 조건으로 굴욕적인 강화조약을 맺어야만 했다. 카르타고는 모든 식민지와 제해권을 로마에 빼앗겼고, 엄청난 군축도 강요받게 된다. 카르타고는 해양 국가임에도 3 단층 갤리선 10척만 남기고 모든 함선과 해군 병력을 해체하라고까지 강요받았다.
게다가 로마의 허락 없이는 어떤 나라와의 전쟁을 벌이는 것도 금지당했다. 심지어 다른 나라의 침략을 받는 상황이 발생하더라도 로마의 허락 없이는 군대를 소집할 수조차 없다는 굴욕적인 조항까지 받아들여야만 했다. 사실상 로마가 카르타고의 생사여탈권을 완전히 손에 넣은 것이다. 결국 이 조항은 제3차 포에니 전쟁에서 카르타고가 멸망하게 되는 결정적인 원인을 제공하게 된다.
한편, 한니발은 그 이후 카르타고의 실질적인 통치자가 되어 전후 복구에 힘썼다. 카르타고도 로마와 비슷하게 두 집정관을 해마다 선출했는데 한니발이 이듬해 그 집정관이 된 것이다. 한니발은 아직 45세에 불과해서 왕성하게 활동할 전성기의 나이이기도 했다. 한니발은 카르타고를 수습하기 위해 정력적으로 일했다. 그는 내심 국력을 회복하여 로마에 복수할 계획도 세우고 있었다.
그러나 한니발은 곧 도망자 신세로 전락하고 만다. 그의 정적들이 그가 로마에 복수를 계획하고 있다면서 로마에 밀고하는 막장까지 달렸기 때문이었다. 심지어 카르타고의 귀족들은 로마의 지원을 받아 한니발을 암살하려고까지 했다. 그는 외국의 지원을 받아 카르타고로 귀환할 것을 기약하며 망명길에 오르게 된다.