标题：第二次布匿战争
战争背景
第一次布匿战争失败之后，迦太基因失去地中海里的西西里岛，迦太基人在哈米尔卡·巴卡的带领下，开始向欧洲西部的伊比利亚半岛发展。公元前226年罗马和迦太基签订和约，规定两国以埃布罗河为界，在伊比利亚半岛上划分势力范围，据李维所述，条约规定埃布罗河南岸城市萨贡托(sagunto)享有自治权。但在公元前219年，汉尼拔出兵攻打萨贡托，该城向罗马求援，但罗马鉴于该城不是罗马的同盟未出兵相助，迦太基军队在围困该城8个月，占领该城。事后罗马令迦太基交出汉尼拔受审，被拒绝之后向迦太基宣战，迦太基政府也下令汉尼拔对罗马开展军事行动。
双方的战争准备
汉尼拔制订的战略计划是，在公元前237年—前219年征服的伊比利亚境内建立一支强大的军队，越过阿尔卑斯山，从北面对罗马实施突然的猛烈突击。据波利比奥斯记载，汉尼拔在伊比利亚的部队共有90,000 步兵, 12,000骑兵，还有一部分是战象部队，具体数目现已无法考证,但可以肯定的是，这支战象部队的数目之多，无论是希腊世界还是罗马都是从未遇见的。
与此同时，罗马方面也积极开展对迦太基的进攻，罗马元老院决定派遣一支以执政官普布利乌斯·科尔内利乌斯·西庇阿为主将，并以其弟格奈乌斯·科尔内利乌斯·西庇阿·卡尔弗斯为副将的军队前往伊比利亚。这支军队包括60艘舰船，10000步兵，700骑兵。又派遣另一执政官提比略·塞姆普罗尼阿斯·隆加斯率领160艘舰船的舰队和两个军团入侵非洲。
跨越阿尔卑斯山
公元前218年春，汉尼拔率领迦太基军队自迦太基在伊比利亚的基地新迦太基出发，沿着海岸向北东北方向进军。在埃布罗河，他将他的军队一分为三，汉尼拔用了几个星期的时间，通过军事或外交手段征服了比利牛斯山和埃布罗河之间的各个部落，但在这些战斗中迦太基军队减员严重。在比利牛斯地区，在他让大约11000名左右不愿离家的伊比利亚士兵驻守在这些新征服的领土，并把伊比利亚的兵权交与其弟哈斯德鲁巴。随后， 汉尼拔率领大约50000名步兵和9000名骑兵进入高卢地区。为了和避免罗马在沿海一带的盟友交战，汉尼拔选择了在内陆行军。在高卢地区，汉尼拔通过外交手段使得迦太基军队可以穿过该地区，但在罗讷河流域迦太基军队和阿洛布罗热（Allobroges）部落发生了战斗。在这之后迦太基军队的数目是38000步兵（不包括轻步兵），8000骑兵，37头战象。
普布利乌斯·科尔内利乌斯·西庇阿从马赛的商人处得知迦太基军队已到达马赛，他将伊比利亚的兵权交与其弟，亲自率领一部分军队前往阻击汉尼拔，防止他入侵意大利本土。汉尼拔避开了罗马的军队，带领他的军队到达阿尔卑斯山脚下，这时已是公元前218年的秋季了，他收到了迦太基在意大利的高卢盟友的来信，他们催促汉尼拔跨越阿尔卑斯山脉，称他们会给予帮助。汉尼拔在阿尔卑斯山中开路架桥，克服种种困难，硬是率军越过了险峻的阿尔卑斯山脉，进抵到陶拉西亚一带帕杜斯河（波河）谷地。
意大利战役
波河流域迦太基军队在五个半月的时间内行军1600余公里，沿途克服了险恶的天然障碍和许多部落的抵抗到达波河。此时，罗马军队正在波河流域和高卢部落波伊人作战，普布利乌斯·科尔内利乌斯·西庇阿在闻得汉尼拔的行踪后，率军前来，取得了当地罗马军队的兵权。双方军队在提契诺河畔开战，迦太基军队击败罗马军队，这是汉尼拔越过阿尔卑斯山后的第一战。在这以后的作战中，汉尼拔对待罗马俘虏都相当残酷，但对待罗马盟友的俘虏却很宽容，为的是争取他们。这时，被派到阿非利加的执政官提比略·塞姆普罗尼阿斯·隆加斯得知汉尼拔的消息后前来支援。双方沿着特雷比亚河对峙，时为公元前217年初春。第二天，罗马人渡过特雷比亚河，双方正式开战，在战斗中迦太基军队里的战象起到了不小的作用，汉尼拔击溃了罗马军队。战后，双方都转入冬营。
这些胜利的取得，使汉尼拔巩固了后方和与罗马为敌的高卢诸部落订立了同盟。罗马元老院决定由盖乌斯·塞尔维利乌斯·格米努斯和盖约·弗拉米尼分别出任公元前217年的执政官。同时在罗马公民中征兵，和在特雷比亚河会战后剩余的兵力组成13个军团，又在罗马的同盟中征募了大约两倍数目的军队。这些军队分别被派往各个战线，盖约·弗拉米尼率30000步兵，3000骑兵驻守在意大利本土。盖乌斯·塞尔维利乌斯·格米努斯率40000士兵驻守波河流域。前任执政官普布利乌斯·科尔内利乌斯·西庇阿被任命为代执政官，重新派到伊比利亚去。意大利中部公元前217年春，迦太基军队越过亚平宁山脉，秘密侵入伊特鲁里亚，进入意大利本土，罗马人在该地区兵力薄弱，只能组织起8000名士兵。鉴于迦太基军队在该地的存在将严重威胁到罗马城的安全，执政官盖约·弗拉米尼火速领兵前往，他们在特拉西梅诺湖附近相遇。汉尼拔利用盖约·弗拉米尼急于求战的心理，在特拉西梅诺湖畔的狭窄隘口巧妙设伏。盖约·弗拉米尼不顾军队在急行军之后的疲惫，和汉尼拔开战。迦太基军队成功将罗马军队引入埋伏中，加以歼灭，30000名罗马士兵多数战死，盖约·弗拉米尼也在战斗中阵亡。随后，汉尼拔击溃了在伊特鲁里亚驻守的8000罗马士兵。
得知此消息后，罗马城中人心惶惶，将一切人员都武装起来，并推荐费边为独裁官，积极准备防御战。但是汉尼拔却领军前往亚得里亚海沿岸，在那里他大肆劫掠，获得了很多战利品。盖乌斯·塞尔维利乌斯·格米努斯率领驻守在波河流域的40000士兵赶来。费边清楚的认识到汉尼拔的军事能力，故而在取得了盖乌斯·塞尔维利乌斯·格米努斯军队的兵权后，仅仅跟随汉尼拔，但不与其正面决战，并通过打击汉尼拔的补给线来消耗迦太基军队的作战能力。这种战术在后世被称为“费边战术”。汉尼拔攻下基罗尼亚城，并在那里过冬。费边的这种拖延做法引起了罗马人不满，他们迫切的希望消灭汉尼拔和他的军队。适逢费边的独裁官六个月任期已满，罗马人在罗马城内重新组织了4个军团，推举卢基乌斯·埃米利乌斯·保卢斯和盖乌斯·特雷恩蒂乌斯·瓦罗为公元前216年的执政官。其中，卢基乌斯·埃米利乌斯·保卢斯由于参加过和伊特鲁利亚人作战，而盖乌斯·特雷恩蒂乌斯·瓦罗缺乏军事经验，只是由于煽情的演说而获得了这个职位。意大利南部  两位执政官率领大约80000名士兵前去和汉尼拔作战，双方将军队驻扎在一个叫坎尼的地方。公元前216年8月2日早晨，迦太基军队和罗马军队都做好准备，罗马军队排成三排，埃米利乌斯·保卢斯指挥中路军，瓦罗指挥右翼，塞维利阿指挥左翼。迦太基军队中路向外突出，努米底亚骑兵埋伏在附近的森林中，汉尼拔的兄弟马戈负责右翼，他的外甥负责左翼。坎尼会战正式开始后，汉尼拔运用钳形战术，下令中路军不断后撤，诱使罗马军队深入，最后由两翼军队顺势包夹，其置于两翼的精锐骑兵从后路包抄，成功完成了对罗马军队的包围。在战斗中汉尼拔派遣500名伊比利亚士兵假投降到罗马军队中，伺机而起，大大的扰乱了罗马军队。是役，罗马军队损失了包括罗马军队的统帅、执政官埃米利乌斯·保卢斯本人与两位前任执政官，两位刑事推事，四十八位军团将校里的二十九位，与八十位罗马元老，而迦太基方面也有一万六千七百名士兵伤亡。
坎尼会战后，意大利的很多部落和城市臣服迦太基。汉尼拔向罗马城索要赎金，被拒绝后将罗马俘虏一部分贩卖为奴隶，其余屠杀。罗马人面对严重危机，解放了罗马城中的8000名奴隶，又在罗马和同盟中征召士兵，积极备战，打造各种武器。原本准备派往西西里的罗马将军马库斯·克劳狄乌斯·马赛拉斯被迅速召回。但汉尼拔并未进军罗马城，为了打击罗马的盟友，破坏罗马在那里的统治根基，汉尼拔转向亚平宁半岛南部。争取罗马的盟友是他一贯的策略。随后，迦太基军队相继攻占了培提利亚、亚壁(Arpi)、普利亚、塔林敦等城市。开始了迦太基和罗马在意大利南部的争夺战。
伊比利亚战役
格奈乌斯·科尔内利乌斯·西庇阿·卡尔弗斯在中和汉尼拔之弟哈斯德鲁巴的对抗中未取得大进展。其兄普布利乌斯·科尔内利乌斯·西庇阿前来和他共同作战。不久，由于迦太基本土受到了努米底亚的西法克斯的进攻，哈斯德鲁巴被召回到迦太基去和他作战去了。形势对罗马人颇为有利，两兄弟取得了不错的成果，更由于他们出色的外交手段，许多城市主动投入到罗马的旗下，迦太基和西法克斯议和后，哈斯德鲁巴被重新派回伊比利亚主持事务，罗马军队依旧获得不少进展。但在一次侦察行动中，两人所率领的少数军队为迦太基军队包围，双双在战斗中阵亡。
普布利乌斯·科尔内利乌斯·西庇阿和格奈乌斯·科尔内利乌斯·西庇阿·卡尔弗斯死后，普布利乌斯·科尔内利乌斯·西庇阿之子大西庇阿主动请缨要求指挥即将派往西班牙的新的罗马军队。大西庇阿趁着退潮之际攻占萨贡托城。
反攻迦太基城
从公元前212年起，主动权转到罗马人手中。他们采取积极的行动夺回原来在意大利、西西里、伊利里亚和马其顿的失地。公元前209年，罗马人攻占了迦太基人在伊比利亚的主要基地之一新迦太基城。哈斯德鲁巴企图从伊比利亚驰援汉尼拔，但因在梅塔夫尔战役(公元前207年)中被击溃，而告失败  。反罗马同盟因罗马人屡屡获胜而日趋瓦解。公元前204年，大西庇阿率罗马军队在迦太基附近登陆。在扎马战役(公元前202年)中，迦太基人战败。
结果
迦太基战败。公元前201年，迦太基人同罗马人签订了条款苛刻的和约。根据和约规定，迦太基撤离西班牙、地中海诸岛，迦太基人失去非洲以外的一切领地，并完全解除武装、自卫队不得赴海外作战，将整个舰队交给罗马，且任何自卫战争必须先和罗马协商等，并偿付巨额战争赔款，迦太基失去所有伊比利亚半岛的领土，海军解散，只能有10艘防海盗的船。同时选100名14岁以上30岁以下男子赴罗马充当人质。