Условия местности, которую выбрал Ганнибал, были для него очень благоприятны. Между горами и озером здесь лежала долина, в которую с запада вело узкое дефиле; у выхода из долины возвышался запиравший выход холм. Сам Ганнибал со своими ливийскими и иберийскими ветеранами расположился на центральных высотах, параллельных берегу; у входа в долину он скрытно разместил всадников и галлов, а на холме у выхода из нее — балеаров и легковооруженных пехотинцев. Вечером накануне боя Фламиний прибыл к озеру, а на следующее утро, едва рассвело, двинулся в ущелье.
Когда римляне постепенно втянулись в покрытую туманом долину, Ганнибал дал сигнал своим частям к одновременному внезапному нападению. Карфагеняне сбежали вниз, и римляне, шедшие в густом тумане, услышав крики противников, поняли, что окружены. Но они даже не могли ясно представить себе, что происходит. Их атаковали одновременно и с фронта, и с тыла, и с флангов [ср. у Фронтина 2, 5, 24]. Попытки консула построить солдат для сражения ни к чему не привели: воины не слышали приказов; многие пытались бежать. Битва приняла такой ожесточенный характер, что сражающиеся не заметили даже страшного землетрясения [Плут. Фаб., 3; Циц. Предв., 1, 35; Плиний, 2, 86; Флор, 2, 6]. Сам консул погиб от руки некоего инсумбра Дукариома. После этого римляне обратились в паническое бегство; иные безрезультатно пытались спастись вплавь или заходили в озеро, пока было можно, и там гибли под ударами всадников Ганнибала. Только 6000 римлян сумели вырваться из этого ада, но были настигнуты и окружены карфагенской конницей, которой командовал Махарбал. Он обещал, что эти римские солдаты будут отпущены на свободу, если сдадут оружие, и римляне сдались в плен. Однако Ганнибал заявил, что Махарбал не имел права давать противнику какое бы то ни было обещание, приказал заковать римлян в цепи и отдал их под стражу галлам. Отпустил он только латинян — союзников Рима, снова повторив то, что говорил много раз: он пришел воевать не с италиками, а с римлянами за освобождение Италии.
Всего, по данным Ливия, который ссылается в этом случае на Фабия Пиктора, римляне потеряли убитыми при Тразименском озере 15 000 воинов. Аппиан исчисляет армию Фламиния в 30000 пехотинцев и 3000 всадников [Апп. Исп., 8]; Евтропий и Орозий пишут, что Фламиний потерял убитыми 25000 [Евтролий, 3, 9; Орозий, 4, 15, 5]; по данным Орозия, 6000 римлян были захвачены в плен. Среди убитых искали по приказанию Ганнибала труп Фламиния, чтобы предать достойному погребению. 10000 римских воинов разбежались и теперь пробирались в Рим, 10000 попали в плен [ср. у Вал. Макс., 1, 6, 6]. По Ливию, потери карфагенян составили 2500; по Полибию — 1500 [Полибий, 3, 80–85; Ливий, 22, 3–7; Апп. Ганниб., 9—10; Зонара, 8, 25]; по Орозию [4, 15, 5] — 2000 человек.
Диктатура Фабия Максима
Когда Гней Сервилий Гемин получил в Аримине известие о том, что Ганнибал находится в Этрурии и расположился около лагеря Фламиния, первым его намерением, как повествует Полибий [3, 86, 3], было соединить свою армию с легионами коллеги и противопоставить Ганнибалу всю мощь римского оружия; однако он не мог это сделать «из-за тяжести войска». Предлог явно надуман. О подлинных мотивах Сервилия можно, конечно, только догадываться; думается, что решающую роль здесь сыграло фактически нежелание Сервилия, ставленника аристократических кругов, оказать действенную помощь Фламинию, вождю демократического движения. Однако оставаться абсолютно бездеятельным Сервилий тоже не мог и поэтому отправил к Фламинию 4000 всадников под командованием пропретора Гая Центения. Узнав, что произошло у Тразименского озера, Центевий повернул в Умбрию. Тем временем Ганнибал, получив известие о новом противнике, отправил против него Махарбала с отрядом легковооруженных копейщиков и некоторым количеством кавалеристов. Настигнув противника, воины Махарбала уже в первой стычке перебили около 2000 римлян, а остальных загнали на какой-то холм, окружили и взяли в плен [Полибий, 3, 86, 1–5; Ливий, 22, 8, 1].