În anul 216 î.Hr romanii erau determinați să-l înfrângă pe Hannibal. Au reușit să strângă 87.000 de soldați față de cei 50.000 ai punilor. Forța acestei armate uriașe a fost însă subminată de alegerea în fruntea Romei a doi consului care nu au adus unitatea de care cetatea avea atâta nevoie.
Gaius Terentius Varro și Lucius Amelianus Paullus aveau vizini divergente asupra modului în care trebuia abordat războiul contra Cartaginei. Paullus era favorabil vechii tactici fabiene a încercuirii trupelor inamice pe timpul iernii și înfometarea dușmanilor, în timp ce Varro dorea o luptă în câmp deschis. Ca urmare a indeciziei, comanda trupelor se făcea conform unei rotații zilnice. Pe la sfârșitul lui iulie iscoadele romane localizaseră armata Cartaginei în jurul orașului Cannae, în regiunea Apulia. Latinii și-au făcut tabăra la circa 16 km. depărtare de inamici. Pe 1 august, după câteva lupte minore, Hannibal și-a condus trupele la nord, de-a lungul râului Aufidus, și-a stabilit tabăra și le-a oferit romanilor ceea ce doreau: lupta. Paullus, care era la comandă în acea zi, a refuzat confruntarea, în ciuda sfaturilor celuilalt consul. Ziua următoare, cu Varrus la conducere, aripa stângă romană a trecut râul și s-a constituit în formațiune de luptă. Servillius Germinus și Atilius Regulus (consulii din anul precedent) comandau infanteria grea din centru, Paullus conducea aripa dreaptă, unde era cavaleria și două legiuni. Varro, avea sub ordinele sale aripa stângă și la dispoziție 20.000 de pedestrași și ceva cavalerie.
Hannibal studiase cu atenție liniile romane. Deși era depășit în ceea ce privește infanteria grea, a observat că pedestrașii din centru erau forte numeroși, neavând spațiu de manevră. După ce trecut râul cu armata sa, și-a aranjat armata într-un mod care i-a șocat pe adversari. În centru i-a pus pe infanteriștii celți și hispanici în linii care nu cuprindeau foarte mulți oșteni, iar la sfârșitul fiecărei linii i-a pus pe infanteriștii de elită din Libia, făcând astfel centrul, care se afla sub comanda sa și a fratelui său Mago, extrem de vulnerabil. Atât pe stânga cât și pe dreapta a pus cavaleria punică sub comanda nepotului său, Hanno și a generalului Hasdrubal. Infanteria romană nu avea în față doar Soarele puternic, ci și vântul care arunca mult praf în ochii legionarilor. Când bătălia de la Cannae a început, romanii cu ușurință au zdrobit infanteria spaniolă și celtică și au spart centrul armatei oponente.
Fără a lua vreo clipă de răgaz, i-au urmărit energic pe inamicii în retragere. Aripile lui Hannibal i-au înceruit repede pe romani. În timp ce latinii erau obosiți în urma luptelor cu spaniolii și celții, cavaleria punilor avea forțele proaspete. Cavaleria punilor din aripa dreaptă, care îi ocolise pe romani prin stânga, ataca acum și ariergarda dreaptă a latinilor. După înfrângerea ei, forțele combinate ale cavaleriei africane a atacat în forță ce mai rămăsese din ariergardă. Un măcel de nedescris a urmat. Paullus, care fusese rănit grav de un prăștiaș din Baleare, încerca să își regrupeze forțele, dar eforturile sale eroice erau în van. După ceva vreme a devenit prea slăbit pentru a-și stăpâni calul, astfel încât garda personală a descălecat pentru a lupta pedestru. Deși i s-a oferit șansa să scape pe calul unui ofițer care se retrăgea, a refuzat, a continuat să lupte și într-un final este ucis Cannae a fost cel mai mare dezastru militar al Romei. Se estimează că 70.000 de soldați au pierit iar 10.000 capturați. Livius a lăsat o teribilă descriere a urmărilor
“Următoarea zi, imediat cum a răsărit Soarele, punii au început să recupereze ce era de recuperat de pe câmpul de luptă. Chair și ei au fost șocați de măcel. Mii de romani zăceau acolo, infanteriști și cavaleri, pe care soarta îi adusese în mijlocul luptei. Unii dintre ei, plini de sânge, se ridicau dintre morții din jurul lor, chinuiți de durere, cerând ajutor, dar erau imediat uciși de puni. Alții aveau șoldurile și genunchii zdorbiți dar touși în viață. O soartă groaznică aveau cei care nu se puteau ridica: sângele îi îneca. Unii oșteni făcuseră gropi în pământ, își acoperiseră căile respiratorii, sinucindu-se astfel. Ceea ce a atras atenția a fost un cavaler numidian care avea deasupra sa un roman. Nasul și urechile îi erau smulse. Deoarece romanul nu mai avea putere să își mânuiască arma, îl mutilase pe inamic prin mușcături disperate.”
Douăzecișinouă de comandanți romani au fost uciși și 88 de militari cu rang senatorial. Varro, arhitectul dezastrului a reușit să scape. Pentru Hannibal, calea spre Roma era deschisă. Conform lui Livius, Maharbal, liderul cavaleriei numidiene, a cerut ca Roma să fie atacată.
“Hannibal,sper să sărbătorim victoria de azi peste cinci zile la Capitoiul. Urmează-mă, mă voi duce înainte cu a mea cavalerie, nici vor ști romanii ce i-a lovit, atât de rapizi vom fi”. Hannibal i-a răspuns că îi apreciază entuziasmul, dar are nevoie de timp pentru planificare. Maharbal i-a replicat: “Zeii nu au dat toate darurile unui singur om. Știi să obții o victorie, dar nu știi să o fructifici”. Armata cartagineză era obistă după atâtea lupte, iar Roma era la 400 de kilometri. Indecizia lui Hannibal a salvat Roma. Teribilele clipe prin care trecea Cetatea Eternă vor râmâne în istorie prin celebra expresie “Hannibal ad portas!”, Hannibal la porțile Romei.