Первыми вступили в бой легковооруженные войска. Хотя велиты значительно превосходили числом своих карфагенских противников, они истратили большую часть дротиков в погоне за нумидийцами. Те же дротики, что оставались, намокли и в дело не годились. Видя это, Семпроний отозвал велитов, которые отступили в промежутки между манипулами. Убрал своих легковооруженных воинов и Ганнибал. Теперь пришло время тяжелой пехоты, и легионеры устремились в бой, метая пилумы в плотную массу кельтов и испанцев. Теперь в дело вступила и превосходная карфагенская конница, которая полностью оголила фланги легионов, открыв их для атаки африканских копейщиков и нумидийцев, которые стояли позади конницы. Ганнибал знал, что его центр не сможет долго противостоять мощи легионов, однако на крылья римской армии уже навалились африканские копейщики и нумидийцы. Вступил в бой и Магон, который вывел из засады 2000 всадников и пехотинцев и напал на римлян с тыла, приводя легионы в замешательство. Триариям (их было 2400 человек) пришлось развернуться, чтобы отразить атаку. Хотя римляне в центре сражались довольно успешно, союзников, на которых наступали слоны спереди и копейщики с нумидийцами-ми с флангов, стало медленно сносить в сторону реки. Римские легионы центра наконец прорвались через испанскую и кельтскую пехоту. Командовавший ими Семпроний решил было, что выиграл сражение, но затем обнаружил, что оказался отрезанным от остальной армии. Шел проливной дождь, и видимость была очень плохая. Римляне не видели способа добраться до своего лагеря, особенно принимая в расчет рыскавшую по полю победоносную карфагенскую конницу, а потому, сомкнув ряды, отступили к Плаценции. Больше всего убитых было среди тех, кто пытался перебраться обратно через реку, — их уничтожили конница и слоны. Однако затем разразилась сильная гроза, которая помогла отступавшим — карфагеняне решили, что преследовать их будет слишком сложно, и вернулись в свой лагерь праздновать победу. Полибий не сообщает ничего конкретного о том, что случилось после сражения. Ливии же рассказывает, что после наступления темноты Сципион с остатками армии переправился через Требию и добрался до Плаценции. Обнаружив, что колония переполнена, он переправился через По и ушел в Кремону. В этом сражении римляне потеряли около 20 000 человек, у Ганнибала потери были незначительными, за исключением боевых слонов, из которых в бурю уцелел только один.
Правдивые сведения о том, что происходит в долине По, дошли до римлян не сразу, потому что Семпроний рапортовал о победе. Вскоре, однако, стало очевидно, что обе армии оказались запертыми в Кремоне и Плаценции — они не могли двигаться, покуда в поле оставалась карфагенская конница, а припасы для солдат приходилось доставлять на кораблях по р. По.