Scipio döntő győzelmeket hozó hispániai hadjáratát követő consulsága alatt előterjesztette, hogy a háborút befejezése érdekében partra kell szállni a karthágóiak afrikai területein. Az óvatos szenátus ellenkezése ellenére a római nép gyűlése felhatalmazást adott Scipionak az inváziós hadműveletek megindítására. Scipio kezdetben elővigyázatosan manőverezett az ellenséges területen, elsősorban karthágói katonaszökevényekkel töltötte fel hadseregét.
Miután azonban Massinissa váltotta fel a numidiaiak törzsét irányító, a karthágóiak mellett álló Syphaxot, Scipio úgy érezte, hogy eljött az ideje a döntő csata megvívásának, és csapataival Karthágó városa ellen vonult. A pánikba esett punok békekötést ajánlottak Scipionak, akinek megvolt a felhatalmazása arra, hogy a megfelelő feltételekről egyezkedjen Karthágóval. Az általa kínált egyezmény szerint Karthágó megtarthatta afrikai területeit, de véglegesen elvesztette tengeren túli birtokait, valamint Massinissa is engedélyt kapott volna a punok érdekszférájában való afrikai terjeszkedésre.
Ezenkívül csökkenteni kellett voln flottáját, valamint háborús kártérítést is fizetnie kellett volna Rómának. A római szenátorok ratifikálták az egyezményt, de a karthágóiak rövid időn belül meg is szegték, mikor elfoglaltak és kifosztottak egy a tuniszi öbölben megfeneklő, ellátmányt szállító római hajórajt. Mindeközben Hannibált a hadseregével együtt a pun szenátus visszahívta Itáliából. Az utánpótlással és Hannibállal megerősített karthágóiak nem támogatták tovább az előnyös egyezményt, ennek következtében megint kiújult a háború a két nép között.
Scipio és Hannibál hadserege a zámai síkon találkozott egymással. A pun sereg helyi polgárokból és az itáliai hadjáratból megmaradt veteránokból állt össze, míg Scipio a korábban már leírt római sereggel, valamint az elpártolt numidiai lovassággal érkezett ide. Állítólag a két hadvezér szemtől-szembe találkozott a csata előtt, ahol Hannibál azt mondta, hogy a végzet játszott szerepet abban, hogy itt kell végül megütközniük, míg Scipio a tuniszi öbölben megtörtént árulásra hivatkozott, miért is nem köthetnek egymással békét csata nélkül.
A Zamanál lezajlott csata különbözik a második pun háború tipikus ütközeteitől, mivel itt a rómaiak rendelkeztek kisebb létszámú gyalogsággal, míg a karthágóiak lovassága – a numidiaiak árulása következtében – közel csak a fele volt a rómaiakénak. Hannibál körülbelül 50000 gyalogossal és 4000 lovassal rendelkezett, míg Scipio seregében 34000 gyalogos és 8700 lovas volt. Hannibál gyalogságát három sorba rendezve állította fel, előttük tizennyolc elefántjával, a lovasságot pedig a szárnyak között osztotta meg.
Az első vonal gall, ligur és balériai gyalogság keverékéből állt, a másodikban helyezkedtek el a Karthágóban és Líbiában besorozott katonák, a harmadikban pedig a legnagyobb harcértékű itáliai veteránjai. Hannibál szándékosan tartotta vissza a harmadik sorban álló gyalogságot, mivel meg akarta akadályozni Scipiot abban, hogy a korábban az ilpiai csatában alkalmazott taktikájához hasonlóan áttörjön a karthágói csatasor centrumán, és bekerítse vonalait.
A pun vezér remélte, hogy a harci elefántok valamint az első két sor meggyengíti, és megbontja a rómaiak arcvonalát, melyet követően bevetheti a tartalékban lévő harmadik sort és felmorzsolhatja Scipio seregét. Bár ez a taktika jól átgondoltnak tűnt, mégsem vezette Hannibál seregeit győzelemre.
A csata kezdetén a fölényben lévő római lovasság elsöpörte, majd elüldözte a csatamezőről a karthágói megfelelőjét – megfosztva ezzel Hannibált teljes lovasságától (bár néhányan azt gondolják, hogy Hannibál szándékosan csalta el ellenfele lovasait, hogy eliminálja a rómaiaknak ebben az egységformában lévő számbeli előnyét). Hasonlóképpen, Hannibál első két vonala, képtelenek lévén felvenni a harcot a magabiztos és jól képzett római légionáriusokkal, hamarosan szétszóródott a manipulusok nyomása alatt.

Éveken keresztül Hannibál megnyert minden csatát tapasztalt hadseregével, de most a legjobb római haderővel kellett szembenéznie, míg őneki egy kapkodva megszervezett sereget kellett irányítania, ami csak gyengén volt képes teljesíteni a rómaiakkal szemben. Ráadásul Scipio egy ötletes módszert talált ki Hannibál elefántjainak semlegesítésére.
Először is a római tisztában volt vele, hogy az elefántoknak parancsba lehet adni a rohamot, de azok csakis egy egyenes vonalban képesek előretörni. Ezért ahelyett, hogy csapatait a szokásos ”sakktábla” alakzatban állította volna fel, helyette a veliteseket, a pricipeseket és a triariusokat egymás mellett álló oszlopokban elhelyezett félezer emberből álló csoportokba szervezte.
Úgy gondolta, hogy a sorban szándékosan meghagyott közökben az elefántok majd egyszerűen csak keresztül rohannak anélkül, hogy megsebesítenének bárkit is. A harci elefántok valóban keresztülrohantak a közökön, és a túloldalon már csak egyenként le kellett vadászni őket (néhány meg is zavarodott, és visszafordulva a karthágói vonalakra támadt). A vadállatok keresztülrobogását követően Scipio csapatai visszaálltak a megszokott formációba, és tovább folytatták a menetelést.
Hannibál seregének részleges kudarcai ellenére a csata még közel sem dől el. Mikor a római gyalogság a karthágóiak harmadik vonalával csapott össze ádáz küzdelem kezdődött, melyben mindkét oldal kivívott magának bizonyos fölényt arcvonal egyes pontjain. A csata egy pontján úgy tűnt Hannibál már a győzelem elérésének határán van, de Scipio lovassága, miután elűzte a karthágóiak azonos egységeit, még időben visszatért, és hátba támadva pun sereget, megfordította az ütközet kimenetelét.
Ez a kétirányú támadás ugyanis felbomlasztotta a karthágóiak formációját, így képtelenek voltak ellenállni a képzett és eltökélt római katonák rohamának. Hannibál döntő vereséget szenvedett, és így Karthágó elveszítette minden védekező képességét. Zamanál a punok hozzávetőleg 20000 embert veszítettek, 11000 megsebesült és 15000 esett fogságba. A rómaiak vesztesége 1500 halott és 4000 sebesült volt.
A zamai győzelmet követően a háború véget ért, és a karthágóiakra pedig olyan békefeltételeket kényszerítettek, ami lehetetlenné tette, hogy a jövőben veszélyeztessék Róma hatalmát a nyugat mediterrániumi térségben.
Amikor hetven évvel később a harmadik pun háború kitört, a karthágóiak csak elhanyagolható katonai erővel rendelkeztek, és még Massinissát sem voltak képesek legyőzni Afrikában. Ennek ellenére néhány évig meg tudták védeni a városukat, de a hosszú ostromot követően a rómaiak bevették és teljesen elpusztították, a mindösszesen 50000 túlélőt pedig eladták rabszolgának.
Amaltheia