Druga wojna punicka toczyła się w latach 218-201 p.n.e., lecz historia konfliktu pomiędzy Rzymem i Kartaginą sięgała 50 lat wstecz. Wszystko zaczęło się jako spór terytorialny, lecz z czasem walki przekształciły się w egzystencjalny pojedynek, w którym Republika Rzymska i miasto-państwo Kartagina walczyły o dominację w basenie Morza Śródziemnego.
Pierwsza wojna punicka (264-241 p.n.e.) zakończyła się zwycięstwem Rzymu, lecz na początku drugiej wojny to Kartagina pod wodzą Hannibala rozdawała karty. Brawurowa przeprawa wojsk kartagińskich przez Alpy umożliwiła inwazję na półwysep Apeniński. Najemna armia, którą dowodził Hannibal, złożona z Libijczyków, Numidyjczyków, Hiszpanów i Celtów pustoszyła Italię, niszcząc i paląc wszystko na swojej drodze i raz za razem zadając Rzymianom ciężkie obrażenia. W bitwach nad rzeką Trebią i Jeziorem Trazymeńskim wojska Hannibala pokonały Republikę, a liczba poległych Rzymian sięgała nawet 50 tysięcy.
Po tych porażkach Rzym przyjął strategię opóźniania, której celem było odcięcie linii zaopatrzenia Hannibala i uniknięcie walnych bitew, na które liczył kartagiński wódz. Takiej taktyki nie utrzymano jednak długo. W 216 p.n.e. wybrano Gajusza Terencjusza Warrona i Lucjusza Emiliusza Paulusa na współkonsulów i wyposażono ich w osiem legionów – największą armię w historii Republiki. Ich misja była jasna: należało zmiażdżyć wojska Hannibala.
Szansa na starcie pojawiła się latem tego samego roku, kiedy Hannibal zajął ważny skład zaopatrzenia w pobliżu miasta Kanny. Warron i Paulus ruszyli w pościg, a na początku sierpnia Rzymianie i Kartagińczycy zostali rozmieszczeni wzdłuż rzeki Aufidus (dzisiejsza nazwa: Ofanto). Według starożytnego historyka Polibiusza, Hannibal miał do dyspozycji około 40 tysięcy piechoty i 10 tysięcy kawalerii, Rzymianie natomiast szczycili się około 80 tysiącami żołnierzy i 6 tysiącami jazdy.
Rankiem 2 sierpnia obie armie zebrały się na gorącej równinie i przygotowały do bitwy. Rzymianie ustawili się w tradycyjnym szyku blokowym, gdzie piechotę chroniła rozmieszczona na skrzydłach kawaleria. Warron, ówczesny dowódca, miał nadzieję, że użyje swoich legionów jak taran, by przełamać środek linii Kartaginy. Hannibal tego się właśnie spodziewał, więc ustawił swoją armię w niekonwencjonalnym szyku, który miał wykorzystać rozpęd Rzymian przeciwko nim.
Najsłabsze oddziały, galijskich Celtów i Hiszpanów, Hannibal umieścił w samym środku swojej linii. Następnie bardziej elitarną, zaprawioną w bojach piechotę libijską nieco z tyłu na obu flankach. Kawaleria zajęła zaś pozycje na skrajnym lewym i prawym skrzydle. Po „zmontowaniu” linia wojsk kartagińskich przypominała długi półksiężyc, który wybrzuszał się w środku w kierunku Rzymian. Hannibal, który nigdy nie dowodził z oddali, zajął stanowisko z przodu, obok swoich Hiszpanów i Galów.
„Teraz rozpoczęła się wielka rzeź i wielka walka. Każda strona walczyła mężnie” – pisał później historyk Appian. Na dźwięk trąb wojska ruszyły na siebie. Lekka piechota rozpoczęła walkę, rzucając oszczepami, włóczniami i pociskami. Pierwszy, decydujący manewr nastąpił, gdy ciężka kawaleria pod dowództwem Hazdrubala Barkasa (brata Hannibala) wdarła się na jeźdźców na prawym skrzydle Rzymian. W krótkim czasie jeźdźcy kartagińscy prawie unicestwili rzymską kawalerię.
Piechota wciąż walczyła, ścierając się w walkach na miecze i włócznie. Kartagińska piechota była powoli spychana do defensywy – jednak taki właśnie był plan Hannibala. Chciał dać Rzymianom wrażenie, że zwyciężają, a przez to zwabić ich w środek swojego „półksiężyca”. Po ich bokach stały jeszcze niezaangażowane oddziały libijskie. Kiedy Rzymianie szli na kartagińską piechotę, Libijczycy zaczęli ich okrążać i zamykać szyk. Rzymianie, widząc, co się dzieje, zbili się w grupę.
Hannibal wydał rozkaz wybicia wszystkich wrogów. Wojska rzymskie znalazły się w potrzasku, otoczone przez Kartagińczyków. Jednocześnie kawaleria Hazdrubala pędziła po polu bitwy rozbijając resztę rzymskiej jazdy, aby następnie zawrócić i dołączyć do zaciskającego się wokół Rzymian okrążenia.
Pomimo rozpaczliwej sytuacji wojska Republiki nie zamierzały się poddać, jednak dalsza bitwa przypominała raczej rzeź, aniżeli regularną bitwę. W ciągu kilku godzin równina pod Kannami zamieniła się w pole śmierci. Wojska Hannibala zabiły od 50 do 70 tysięcy Rzymian. Sama Kartagina poniosła stosunkowo niewielkie straty – jedynie 6 tysięcy zabitych.
Wiadomość o masakrze pod Kannami wywołała panikę w Rzymie. Ludzie gromadzili się na ulicach i opłakiwali poległych. Wysłano nawet senatora do greckiej wyroczni w Delfach, aby odgadł sens tragedii, a także złożono ofiary z ludzi, aby przebłagać bogów. W tym czasie Hannibal uznał jednak, że jego armia jest zbyt słaba, by pomaszerować na Rzym.
Lamenty Rzymian nie trwały długo. Senat odrzucił oferty pokojowe Hannibala i odmówił wykupu więźniów. Szybko zabrano się do produkcji nowej broni i zaczęto odbudowywać armię, m.in. poprzez obniżenie wieku rekrutacyjnego, werbowanie skazańców, a nawet oferowanie niewolnikom wolności w zamian za służbę.
Armia Hannibala krążąca po Italii coraz bardziej słabła. Ostateczna klęska Kartaginy nadeszła w 202 roku p.n.e. w bitwie pod Zamą.