Po przejściu Hannibala przez Alpy i zreorganizowaniu wojsk, zagrożona została cała Italia. Senat rzymski w obliczu niebezpieczeństwa wysłał dwie armie konsularne, Publiusza Korneliusza Scypiona oraz Semproniusza Longusa, które jednak zostały pokonane nad rzeką Trebią w 218 roku p.n.e.
Tym zwycięstwem Hannibal otworzył sobie drogę do środkowej Italii. Senat zaniepokojny przebiegiem wojny powołał dwóch nowych konsulów, Serwiusza Geminiusza i Flaminiusza. Starali się oni zagrodzić drogę armii punickiej przez Apeniny, lecz Hannibal zupełnie zaskoczył Rzymian przeprawiając się przez bagnistą dolinę rzeki Arno. Dzięki temu manewrowi zastawił pułapkę na armię konsula Flaminiusza nad Jeziorem Trazymeńskim, gdzie w 217 roku p.n.e. doszło do wielkiej bitwy. W jej wyniku zginęło 15.000 żołnierzy rzymskich i sam konsul.
Błyskotliwe zwycięstwa Hannibala zmusiły senat do powołania, od dawien dawna nie stosowanego organu, dyktatora. Został nim Fabiusz Maximus. Prowadził on bardzo mądrą politykę unikania walnej bitwy z Kartagińczykami, za co zyskał przydomek Cunctator (Zwlekający).
Hannibal, który nie mógł zaatakować dobrze obwarowanego Rzymu, atakował pola chłopów italskich, pozbawiając tym samym stolicę dostaw żywności. Omijał jednak celowo pola należące do rodu Fabiuszy, czym doprowadził do zmian we władzy. W Rzymie narodziły się podejrzenia, że konsul należy do jakiegoś spisku. W efekcie senat powołał drugiego dyktatora, Mincjusza Rufusa, by w 216 roku p.n.e. zlikwidować stanowiska dyktatorów i mianować dwóch nowych konsulów: Gajusza Terencjusza Warrona i Lucjusza Emiliusza Paulusa. Otrzymali oni polecenie ostatecznego zlikwidowania armii Hannibala.
Republika rzymska, w celu wystawienia potężnej armii, zmobilizowała największe siły w swojej dotychczasowej historii. Wojsko rzymskie zostało przydzielone dwu konsulom, od których miał zależeć los kampanii. Obaj dowódcy: Paullus i Varro na czele swojej potężnej armii ruszyli „tam, gdzie jak słyszeli, obozują nieprzyjaciele” (Polybos), czyli pod miasto Kanny (Cannae) w Apulii w południowo-wschodniej części Italii.
Wojska
Siły rzymskie liczyły 8 legionów Rzymian i kolejne 8 legionów sprzymierzeńców z całej Italii:
– 55.000 ciężkozbrojnych piechurów
– 15.000 lekkiej piechoty
– 6000 jezdnych (2400 obywateli rzymskich i 3600 sprzymierzeńców)
Do osłony obozu oddelegowano 10.000 ludzi, nadal jednak armia rzymska była zdecydowanie liczebniejsza od rywala.
Armia Kartagińczyków była skromniejsza i liczyła:
– 32.000 ciężkozbrojnych piechurów
– 8000 lekkiej piechoty
– 10.000 jezdnych
Taktyka rzymska zakładała mocne uderzenie potężnym centrum złożonym z 3 rzutów ciężkozbrojnej piechoty. Na flankach konnica rzymska miała zahamować uderzenie znacznie silniejszej konnicy Hannibala uniemożliwiając okrążenie armii. W tym czasie ogromna fala rzymskiej piechoty miała przetoczyć się przez centrum wojsk Hannibala i zmasakrować wszystko co znajdzie na swojej drodze. Przy takiej kolei rzeczy nawet silna konnica punijczyków nie odmieniłaby losów bitwy. Prawe skrzydło jazdy, składające się z 2400 obywateli rzymskich, objął Emiliusz Paulus. Lewa flanka pod dowództwem Terencjusza Warrona składała się z 3600 elitarnych kawalerzystów sprzymierzeńców.
Taktyka Hannibala polegała na uformowaniu szyku piechoty w półksiężyc wybrzuszony w kierunku linii Rzymian. W centrum szyku znajdowało się 22.000 lekkozbrojnych Galów i Iberów. Po bokach tej formacji znalazła się ciężka piechota kartagińska i libijska. Na prawym skrzydle stanęła 4000 lekkozbrojna konnica numidyjska, a na lewym 6000 doborowa, ciężka kawaleria galijska i iberyjska, pod wodzą Hazdrubala i greckiego najemnika Sosylosa.
Plan Hannibala polegał na wysunięciu płytkiego centrum piechoty, na którym właśnie skupić się miał cały impet rzymskiego uderzenia. Pod naporem cienka linia piechoty miała się wycofać i wciągnąć piechotę rzymską w gigantyczne podwójne obcęgi. Na obu końcach linii bojowej Iberów i Celtów stanęły silne hufce najlepszych piechurów Hannibala, Libijczyków, po 5000 żołnierzy. Konnica w tym czasie miał się rozprawić ze słabszą i mniej doświadczoną konnicą Rzymian i zaatakować piechotę od tyłu.
Bitwa
Bitwa rozpoczęła się starciem harcowników z obu stron. Ostrzał łuczników i procarzy Hannibala spowodował spore straty wśród rzymskich lekkozbrojnych (welitów) zanim podeszli oni na odległość umożliwiającą użycie oszczepów. Po dłuższej wymianie ognia lekkozborjni zostali wycofani.
Rzymskie legiony po wycofaniu się welitów za ich formacje ruszyli do ataku w zwartym szyku. Po dojściu na odpowiednią odległość legioniści wyrzucili pila. Tysiące oszczepów spadło na Galów i Iberów, zmiatając ich pierwsze szeregi. Legioniści dobyli mieczy i ruszyli do ataku. Lekkozbrojni najemnicy zachwiali się pod straszliwym uderzeniem żelaznego tarana. Momentalnie słaba piechota iberyjsko-galijska zaczęła się wycofywać pod naporem legionów. Ich łuk wygiął się w drugą stronę i zaczął cofać. Armia rzymska parła do przodu wchodząc coraz głębiej w szyki wojsk Hannibala. Opór był słaby. Szybkie wycofywanie się wrogów zdawały się Rzymianom spowodowane bojaźnią barbarzyńców przed potężną formacją ich armii. Legiony nadal wbijały się coraz głębiej w szyki wroga, mając wciąż wrażenie, że zwycięstwo jest już w ich rękach. Lecz, gdy ścigali wycofujących się Iberów i Galów, ci tak naprawdę rozciągali swoją linię tworząc powoli wokół wroga półkole.
Legioniści nie zwracali wogóle uwagi na stojące w miejscu oddziały ciężkiej piechoty afrykańskiej. Możliwe że żołnierze rzymscy po prostu ich nie widzieli. Ich szyk był skierowany na wschód, więc słońce świeciło im w oczy, a wiatr unosił ogromne chmury wzbijanego przez wojska kurzu. Na rozkaz Hannibala ciężkozbrojni libijczycy znajdujący się na końcach półksiężyca runęli na flanki piechoty ryzmskiej. Zdezorganizowane szyki całkiem się rozsypały, a atak na kartagińskie centrum został powstrzymany. Pułapka się zatrzaskiwała.
Tymczasem rozpoczęło się również starcie na skrzydłach. Ciężkozbrojna konnica Hazdrubala na lewym skrzydle runęła na jazdę Paulusa. Przy trzykrotnej przewadze liczebnej na tym wycinku frontu i zdecydowanie lepszym wyszkoleniu jazda kartagińska szybko zmusiła Rzymian do ucieczki. W tym czasie lekka konnica nubijska na prawym skrzydle prowadziła powolną walkę z elitą kawalerii Rzymu. Po zwycięstwie na lewym skrzydle Hazdrubal ruszył na wojska Warrona, biorąc jazdę rzymską w dwa ognie. Pod naporem silniejszych przeciwników drugie skrzydło Rzymian również rzuciło się do ucieczki, w pościg za którym ruszyła lotna konnica numidyjska. Po zlikwidowaniu wrogiej jazdy zgodnie z życzeniem Hannibala, Hazdrubal uderzył od tyłu na zwycięską jak dotąd piechotę rzymską.
Otoczone z trzech stron wojsko rzymskie, nieoczekiwane zostało zaatakowane od tyłu przez cięzkozbrojną konnicę Hazdrubala. Uderzenie to całkowicie zaskoczyło Rzymian. Pułapka Hannibala zatrzasnęła się. Wybuchła panika.
Warron rzucił się do ucieczki, kiedy Paulus próbował opanować chaos i uformować szyk umożliwiający obronę w okrążeniu. Jednak jego starania były nieskuteczne. Legioniści zostali zbici w bezładną masę. Wśród żołnierzy nie było hierarchii, nikt nie dowodził. Toczyła się walka na śmierć i życie. Legioniści znajdujący się w środku nie mogli nawet wziąć udziału w walce. Bezradnie patrzyli na śmierć towarzyszy i czekajali na swoją kolei. Klęska Rzymian była już nieunikniona.
Bitwa zmieniła się w krwawą masakrę. Gdy w końcu ucichł szczęk broni, a kurz zaczął opadać, oczom zwycięzców ukazało się straszliwe pobojowisko z górami trupów. 59.500 Rzymian zostało zabitych, zaś 12.000 wzięto do niewoli. Jedynie 14.500 udało się uniknąć pułapki. Wśród poległych znalazło się 3 z 4 najważniejszych wodzów rzymskich: konsul Paullus, prokonsul Servilius Geminus, były najwyższy urzędnik dyktatora (magister equitium) Minucius Rufus, dwaj kwestorzy – Lucius Atilius i Lucius Furius Bibaculus, 29 z 48 trybunów wojskowych oraz 80 znakomitych mężów Rzymu.
Straty kartagińskie liczyły jedynie około 6700 ludzi, głównie Iberów i Galów.
Rezultaty
Bitwa pod Kannami okazała się największą klęską militarną w całej historii Rzymu. Senat rzymski zszokowany tak ogromną porażką w polu powrócił do strategii unikania walnych bitew na terenie Italii. Zamiast tego, zdecydowano się przeprowadzić ofensywę w Hiszpanii, dokąd udał się młody konsul Publius Cornelius Scipio, nazwany potem Afrykańskim. Dużo czasu musiało minąć zanim Rzymianie znów uwierzyli, że mogą pokonać armię dowodzoną przez Hannibala.
Co zaś tyczy się Hannibala, jego wielkie zwycięstwo nie przyniosło żadnych większych korzyści i ostatecznego rozstrzygnięcia w konflikcie. Błędem jaki popełnił było nie pomaszerowanie na Rzym, serce państwa rzymskiego. Z pewnością zdobycie stolicy zmusiłoby Rzymian do przyjęcia pokoju i ostatecznej porażki w wojnie. Hannibal jednak bał się, że nie uda mu się zdobyć Rzymu i zrezygnował z tego przedsięwzięcia. Zamiast konkretnych działań skupił się na pozyskiwaniu sojuszników w południowej Italii, co było wielkim i decydującym błędem jego kampanii. Kartagina ostatecznie poniosła druzgocącą i niezwykle kosztowną klęskę w konflikcie.