Дойдя почти до вершины холма, римляне столкнулись с испанскими и африканскими пешими воинами, перекрывшими им путь. Последовал жестокий бой. Армия Фламиния уже миновала узкий проход и растянулась по долине, причем ее передовая часть поднималась на холм, а арьергард находился у входа в долину. Расстояние между римским авангардом и остальной армией увеличилось, когда римские передовые отряды вступили в бой. План Ганнибала сработал: враг оказался в ловушке, зажатый между озером и холмами. Ганнибал дал сигнал к наступлению, и галльская пехота, скатившись с холмов, атаковала римскую колонну с флангов. Одновременно конница Ганнибала, спрятанная у входа в долину, атаковала римлян с тыла.
На карте 6 показано расположение карфагенских и римских войск в битве при Тразименском озере. Ганнибал был уверен, что битва начнется рано утром, когда густой туман с озера скроет его войска, сидящие в засаде. Ночью Ганнибал поставил копейщиков и пращников вытянутой линией на южной стороне прохода, оставив озеро у них за спиной. Он выстроил на холме отряды для того, чтобы убедить Фламиния, будто это арьергард его армии, в то время как в действительности большая часть армии скрывалась на холмах. Полибий рассказывает, что утреннюю тишину разорвали резкие звуки трех труб, давая сигнал к атаке. Армия Ганнибала атаковала римскую колонну с невиданной силой.
Испанская и африканская пехота напала на головную часть колонны, блокируя ее продвижение. В течение нескольких минут галлы и легкая испанская пехота прорубили дорогу внутрь колонны. Конница Ганнибала атаковала колонну с тыла. Римляне были в полном замешательстве. Бой начался прежде, чем они успели построиться, чтобы встретить атаку.
Ливий так описывает этот момент всеобщего замешательства.
«За шумом и смятением ни советы, ни приказы не были слышны; солдаты не узнавали своих знамен и своих начальников, и для многих оружие было скорее обременительным грузом, чем защитой. В туманной мгле звучали стоны раненых, гулкие удары кулаков, звон мечей, вопли ярости и ужаса. Одни пускались в бегство и тут же наталкивались на клубок сражающихся и застревали в нем. Другие, опомнившись, пытались вернуться в битву, но их уносило потоком беглецов. Наконец, все удостоверились, что нет иной надежды».[389]
Путь отступления был перекрыт конницей, атаковавшей с тыла, и римляне не могли, отойдя к озеру, перестроиться для наступления. Это была жестокая битва, а в такого рода сражениях никто не мог превзойти галльскую и испанскую пехоту. Три часа продолжалась эта жестокая, кровопролитная битва, пока карфагеняне не уничтожили римскую армию.
Ганнибал позволил до начала битвы нескольким римским отрядам пройти сквозь африканскую и испанскую пехоту, возможно, для того, чтобы вся римская колонна, пройдя через узкий проход, вошла в долину. Эти отряды — по словам Полибия, около шести тысяч воинов — продолжали движение до тех пор, пока не услышали за спиной звуки сражения. Развернувшись, они увидели с холма тысячи убитых римских легионеров, лежащих на земле, и карфагенских воинов, снимающих с них доспехи и оружие. На берегу озера конница добивала оставшихся в живых римских воинов, пытавшихся спастись вплавь. Карфагенская конница под командованием Магарбала настигла и окружила римские отряды, которые не принимали участия в битве.[390]
И Ливий, и Полибий сообщают, что в битве было убито 15 тысяч римских солдат и порядка 1500–2000 воинов Ганнибала, в основном галлов. В плен было взято 6000 римлян и 10 тысяч солдат союзников. Фламиний был убит каким-то инсубром. По приказу Ганнибала среди убитых искали труп Фламиния, чтобы предать достойному погребению, но найти не смогли. У инсубров, одного из галльских племен, был обычай отрезать голову врага и использовать в качестве трофея, вот почему, возможно, не смогли опознать тело, лишенное головы и доспехов. Вероятно, голова Фламиния впоследствии висела на поясе галла, убившего римского командующего.[391]
В то время как Фламиний следовал за Ганнибалом к Тразименскому озеру, Сервилий получил приказ передислоцироваться и присоединиться к Фламинию.[392]
Самый короткий путь в Рим и к Тразименскому озеру проходил по Фламиниевой дороге, соединявший столицу с Аримином, расстояние приблизительно 140 миль. Сервилий отправил вперед 4000 всадников под командованием Сентения, но разведчики Ганнибала узнали о приближении конницы по Фламиниевой дороге. Ганнибал немедленно отправил навстречу им Магарбала с частью конницы. Магарбал заманил римскую конницу в засаду вблизи Ассизи, примерно в двадцати милях от Тразименского озера, и уничтожил ее. Узнав об этом, Сервилий прекратил наступление и вернулся в Аримин.[393]