第一次布匿战争失败之后,迦太基因失去地中海里的西西里岛,迦太基人在哈米尔卡·巴卡的带领下,开始向欧洲西部的伊比利亚半岛发展。公元前226年罗马和迦太基签订和约,规定两国以埃布罗河为界,在伊比利亚半岛上划分势力范围,据李维所述,条约规定埃布罗河南岸城市萨贡托(sagunto)享有自治权。但在公元前219年,汉尼拔出兵攻打萨贡托,该城向罗马求援,但罗马鉴于该城不是罗马的同盟未出兵相助,迦太基军队在围困该城8个月,占领该城。事后罗马令迦太基交出汉尼拔受审,被拒绝之后向迦太基宣战,迦太基政府也下令汉尼拔对罗马开展军事行动。
汉尼拔制订的战略计划是,在公元前237年—前219年征服的伊比利亚境内建立一支强大的军队,越过阿尔卑斯山,从北面对罗马实施突然的猛烈突击。据波利比奥斯记载,汉尼拔在伊比利亚的部队共有90,000
步兵, 12,000骑兵,还有一部分是战象部队,具体数目现已无法考证,但可以肯定的是,这支战象部队的数目之多,无论是希腊世界还是罗马都是从未遇见的。
与此同时,罗马方面也积极开展对迦太基的进攻,罗马元老院决定派遣一支以执政官普布利乌斯·科尔内利乌斯·西庇阿为主将,并以其弟格奈乌斯·科尔内利乌斯·西庇阿·卡尔弗斯为副将的军队前往伊比利亚。这支军队包括60艘舰船,10000步兵,700骑兵。又派遣另一执政官提比略·塞姆普罗尼阿斯·隆加斯率领160艘舰船的舰队和两个军团入侵非洲。
跨越阿尔卑斯山
公元前218年春,汉尼拔率领迦太基军队自迦太基在伊比利亚的基地新迦太基出发,沿着海岸向北东北方向进军。在埃布罗河,他将他的军队一分为三,汉尼拔用了几个星期的时间,通过军事或外交手段征服了比利牛斯山和埃布罗河之间的各个部落,但在这些战斗中迦太基军队减员严重。在比利牛斯地区,在他让大约11000名左右不愿离家的伊比利亚士兵驻守在这些新征服的领土,并把伊比利亚的兵权交与其弟哈斯德鲁巴。随后,
汉尼拔率领大约50000名步兵和9000名骑兵进入高卢地区。为了避免和罗马在沿海一带的盟友交战,汉尼拔选择了在内陆行军。在高卢地区,汉尼拔通过外交手段使得迦太基军队可以穿过该地区,但在罗讷河流域迦太基军队和阿洛布罗热(Allobroges)部落发生了战斗。在这之后迦太基军队的数目是38000步兵(不包括轻步兵),8000骑兵,37头战象。
普布利乌斯·科尔内利乌斯·西庇阿从马赛的商人处得知迦太基军队已到达马赛,他将伊比利亚的兵权交与其弟,亲自率领一部分军队前往阻击汉尼拔,防止他入侵意大利本土。汉尼拔避开了罗马的军队,带领他的军队到达阿尔卑斯山脚下,这时已是公元前218年的秋季了,他收到了迦太基在意大利的高卢盟友的来信,他们催促汉尼拔跨越阿尔卑斯山脉,称他们会给予帮助。汉尼拔在阿尔卑斯山中开路架桥,克服种种困难,硬是率军越过了险峻的阿尔卑斯山脉,进抵到陶拉西亚一带帕杜斯河(波河)谷地。