Został skazany na wyczerpującą wojnę w Italii i oczekiwanie na armię posiłkową. Karta nieuchronnie odwracała się na stronę Rzymu. W 212 roku Rzymianie w zdecydowanej ofensywie oblegli Kapuę i w następnym roku zdobyli ją, mimo manewru Hannibala, który podszedł pod Rzym – był jednak w stanie tylko mu pogrozić, nie zagrozić.

W Hiszpanii dowództwo objął młody Publiusz Korneliusz Scypion; był to początek jego imponującego marszu ku sławie. Zdecydowanym atakiem wziął Nową Kartaginę, hiszpańską stolicę Punijczyków. Nie zatrzymał wprawdzie armii Hazdrubala, brata Hannibala, który z Hiszpanii ruszył przez Alpy na pomoc do Italii. Ale jego wojsko nawet bez udziału Scypiona zostało rozbite przez Rzymian nad rzeką Metaurus w 207 roku. W następnym roku Scypion zupełnie oczyścił z Kartagińczyków Hiszpanię. Zyskał tak wielką sławę, że choć nie sprawował wcześniej niższych urzędów, w 205 roku mógł się ubiegać o konsulat. Został wybrany na ten urząd dzięki programowi, który doskonale odpowiadał nastrojom w Rzymie. Jego mieszkańcy, pałający żądzą zemsty za klęskę pod Kannami, wykarmieni propagandą i wciąż śniący o władzy nad światem, pragnęli jednego – przeniesienia wojny do Afryki. Scypion im to obiecał.

W tej historii nie będzie suspensu. W tym punkcie wojny kwestia zwycięstwa była już przesądzona. Pewne zaskoczenie dzisiejszego obserwatora może najwyżej wzbudzić to, że druga wojna punicka nie zakończyła się oblężeniem i zniszczeniem Kartaginy. Ostateczny wyrok został na kilkadziesiąt lat odłożony, na razie Rzymianie mieli tylko wyrwać Kartagińczykom zęby. Nie znaczy to jednak, że kampania afrykańska Scypiona była bez znaczenia. Jej celem było wszakże coś więcej niż wygranie wojny – chodziło o zwrócenie Rzymowi utraconego pod Kannami honoru i napisanie nowej legendy.

Zatem w 204 roku Scypion wylądował w Afryce i wznowił pisanie opowieści, którą rozpoczął snuć w Hiszpanii. W 203 roku w bitwie na Wielkich Polach rozbił armię punicką wzmocnioną o wojska Syfaksa, króla Numidii, krainy rozciągającej się wokół Kartaginy na wybrzeżu afrykańskim. To zwycięstwo miało dwie bardzo istotne konsekwencje: na tronie Syfaksa Scypion osadził numidyjskiego uzurpatora Masynissę, a Kartagińczycy poprosili o pokój. Na jego mocy mieli oddać Hiszpanię, utracić flotę i wypłacić Rzymowi pokaźne odszkodowanie. Gdy podane przez Scypiona warunki pokojowe zostały zatwierdzone przez rzymski senat, Punijczycy zerwali traktat. Odwołany z Italii przez kartagiński senat Hannibal po kilkunastu latach wrócił do Afryki, którą opuścił za młodu. Ostatnia bitwa została stoczona w głębi lądu, w miejscu, którego dokładna identyfikacja budzi dziś wątpliwości. Korneliusz Nepos, żyjący w I w. przed Chrystusem autor niezbyt wybitnej biografii Hannibala, określił tę lokalizację „apud Zamam” – pod Zamą.