Что касается черт характера Ганнибала, то римские историки старательно подчеркивали его негативные качества. Это делалось с политической точки зрения, чтобы преувеличить моральное превосходство римлян. Вот обвинения, выдвинутые против Ганнибала: чрезмерная жадность, жестокость и зверства, сексуальная распущенность и даже каннибализм. Автор «Всемирной истории» Полибий считает Ганнибала корыстолюбивым и жестоким, «предающимся любви и роскоши». Тит Ливий рассказывает, что, планируя маршрут перехода через Альпы, Ганнибал будто бы одобрил идею одного офицера: чтобы успешно преодолеть Альпы и выжить, придется есть умерших. Все эти высказывания были желанием римлян показать, насколько они выше в нравственном отношении своего злейшего врага.
Список преступлений Ганнибала, составленный римскими историками по результатам действий в военное время, очень длинный и большей частью вызывает сомнения. Полководец обвиняется в следующих злодеяниях. Например, после битвы при Каннах всех пленных, за которых не был получен выкуп, утопили, а их тела использовали в качестве моста для перехода армии Ганнибала. Считается, что своих воинов он приучил есть человеческое мясо. Жители Казилина были проданы в рабство после того, как заплатили выкуп за свободу. Ганнибал разрушил много южных италийских городов, жестоко обращался с местным населением, зачастую их убивая. Перед отплытием армии из Италии в Карфаген главнокомандующий приказал зарезать 20 тысяч своих воинов-италиков в святыне Юноны Лацинии в Кротоне, «чтобы они не могли служить врагу». И это еще не полный перечень обвинений Ганнибала в жестокости и склонности к зверствам, приводимых составителями.
Большую часть этих обвинений, хотя и не все, можно легко отвергнуть. Пять тысяч военнопленных, которых Ганнибал использовал для того, чтобы вывести войска, в другом сочинении оказываются двумя тысячами быков, к рогам которых привязали головешки и отправили по дороге, чтобы отвлечь внимание римлян, в то время как Ганнибал ушел по другой дороге. Обвинение в убийстве 20 тысяч италийских союзников перед отъездом из Италии вызывает недоумение. Тогда Ганнибал не мог их взять с собой, так как у него не хватало кораблей. Проблема была настолько острой, что, по словам очевидцев, Ганнибал был вынужден убить четыре тысячи лошадей, чтобы они не достались римлянам. В любом случае армия, которую Ганнибал переправлял в Карфаген, была меньше (18 тысяч человек), чем количество предположительно убитых италийских воинов. Кроме того, большая часть этого войска сформировала последнюю линию в битве при Заме. Люди погибли, исполняя свой воинский долг.