公元前216年6月初,汉尼拔(Hannibal, 247BC - 183BC)为解决给养,出其不意攻占了阿普利亚平原上的坎尼城堡,获得大量军需品,罗马人在惊慌之余,对屡战屡败的军队强烈不满,在罗马政府要求胜利的压力下,两位新任执政官艾弥利乌斯和法罗带领罗马大军向坎尼城逼近。
艾弥利乌斯主张离迦太基军远一点地方扎营,但求胜心切的法罗更想贴近些扎营,这样会迫使汉尼拔接受挑战。罗马军队采取的是将领“战场轮值制”,艾弥利乌斯在行使指挥权时,把全军一分为二,在奥菲杜斯河畔建立一个新营,老营留在离迦太基军营六英里之处。
双方开始战前动员,激励士兵奋勇作战。两天以后,汉尼拔沿河岸展开兵力,但这天罗马军是艾弥利乌斯担任战场指挥,他发现地形有利于本来就占优势的迦太基骑兵,于是坚壁不出。但是到了第二天,法罗担任指挥,他早就渴望同汉尼拔一决雌雄,他留下一千罗马马坚守两个军营,率领八个罗马军团60000多人(其中四个罗马同盟国军团,罗马在战时采取一个罗马军团同一个同盟国军团混编的组合方式,每个军团约5000人左右),进到奥菲杜斯河左岸排兵布阵。汉尼拔也率领37000名步骑兵摆开阵势。
汉尼拔的军队由许多分队组成,没有共同语言,武器种类繁多,战法各异。汉尼拔最信任的利比亚腓尼基部队步、马战并用,使一根重型长矛;伊比利亚部队主要使用一柄巨剑,长于砍、刺;高卢人几乎赤身裸体地挥舞一把大砍刀;巴利阿里群岛的士兵使用的是命中率极高的投石器;非洲土著人使用长枪、弓箭和长剑;而手持标枪和剑的非洲努米底亚骑兵是战斗力最强的部队。灵活机动,善于适应各种环境下作战是迦太基军队的特点。
相对而言,罗马人战争观念落后,作战方式呆板,阵式僵化,所依赖的是个人的勇敢顽强精神。罗马士兵的装备比较简陋,轻步兵携带一剑、一矛、一盾,年轻士兵配置两支标枪和一把短剑,中年和老年士兵则是短剑加一支长矛。作战时先投出密集的标枪,然后用短剑进行格斗。罗马人不喜欢用方阵来形成集体冲力,而更喜欢单兵肉搏。对于骑兵的决定性作用更是一无所知,罗马骑兵更愿意下马来进行白刃战。
汉尼拔在中央战线上部署了伊比利亚步兵、非洲步兵和高卢步兵。在左翼部署了伊比利亚骑兵和高卢骑兵,由从西班牙来探望他的弟弟哈斯德鲁巴统领。在右翼的是非洲努米底亚骑兵。而在战线最前列,部署了巴利阿里投石兵和轻长矛手。
人数占绝对优势的罗马军团还是采取了惯用的三线战斗编队,罗马骑兵布置在右翼,同盟国骑兵布置在左翼。法罗见汉尼拔的左翼斜靠在河岸上,消除了左翼被迂回的威胁,便缩短战线以对应汉尼拔的战线长度,罗马军因压缩正面宽度而增加了纵深的长度,从而减小了实施机动的余地。队与队、人与人之间的距离变得狭窄而拥挤,一开始就处于不利的状态中。
法罗指挥罗马军团全线压上,汉尼拔命令自己的中央战线呈弓形前凸,迎战罗马的中央密集步兵集团。哈斯德鲁巴率左翼伊比利亚骑兵和高卢骑兵迅速击败对面的罗马骑兵,从侧翼绕过整个罗马军阵后,打击在罗马军团左翼的、正在同迦太基右翼努米底亚骑兵正面交战的同盟国骑兵的背部,在前后夹击下,罗马左翼骑兵也崩溃了。哈斯德鲁巴实施追击,将对方残余骑兵驱逐出战场。
与此同时,在罗马中央步兵集团冲击下,汉尼拔指挥中央步兵向后退却,战线由弓形前凸变为平直、再变为后凹,呈弯月型,此时越来越多的罗马步兵向中心涌入,挤作一团,连挥动武器都感到困难,汉尼拔命令两翼非洲步兵向罗马军团作向心攻击, 在敌我两股力量自然冲击下,迦太基阵形趁势向内旋转,将八个罗马军团全部卷进口袋。这时,大获全胜的哈斯德鲁巴率迦太基骑兵返回战场,赶紧封住“袋口”,并从背后向罗马军团发起致命的打击。夕阳残照下,40000多具罗马士兵的尸体和数千迦太基士兵的尸体留在了血水染红的坎尼平原上,侥幸脱逃的罗马人不到一万五千名。其中之一正是法罗。他的蹩脚战术使汉尼拔事半功倍。死者之中有艾弥利乌斯、一大批下级军官以及八十名元老院议员。这支迄此为止罗马史上最庞大的野战军就此毁灭。为了歼灭这支野战军,汉尼拔付出了死伤近八千人的代价。