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