В течение 5 июня австрийская дивизия Отта, занимавшая позицию у Пьяченцы (город в Италии на южном берегу По при впадении в нее Треббии), вела упорные бои с превосходящими силами французов, но была отброшена сперва за р. Треббия, а потом – и за Тидоне. 6 июня сражение возобновилось. Макдональд, который знал о приближении Суворова, направил против 6-тысячной австрийской дивизии 3 дивизии (19 тыс. человек) с целью уничтожить ее до подхода главных русско-австрийских сил. К 15 часам 6 июня австрийские войска находились в полуокружении. Узнав о тяжелом положении Отта, Суворов взял с собою четыре казачьих и два драгунских полка и помчался с ними к полю боя.
Зная о тяжелом положении Отта, Суворов совершил беспримерный марш-маневр: практически без остановок было пройдено 80 км за 36 часов). Вечером 6 июня 5-тысячный русский авангард Багратиона достиг реки
Тидоне. Оценив обстановку, Суворов приказал Горчакову с двумя казачьими полками действовать против дивизий Сальма и Виктора, а Багратиону с двумя казачьими и двумя драгунскими полками атаковать дивизию Домбровского с фронта и фланга. Багратион сделал попытку возражать, ссылаясь на крайнюю усталость и малочисленность частей, растянувшихся на марше: «В ротах нет и сорока человек», на что Суворов закричал ему в ухо: «А у Макдональда нет и двадцати! Атакуй с Богом! Ура-а!» Внезапный удар малочисленных войск привел к полному поражению французов, которые, потеряв около 1, 2 тыс. пленными и около 2 тыс. убитыми, были отброшены к р. Треббии.
Суворов принял решение 7 июня атаковать главными силами левое крыло французских войск, разбить его, прижать французскую к реке По и уничтожить. Основной удар должны были нанести русские войска, вспомогательный – австрийская дивизия Отта. Вводом в сражение резерва предполагалось окончательно разбить противника и отбросить его на 20 км в район слияния рек Нура и По. Макдональд, находясь в ожидании прибытия мощных резервов (их подход ожидался во второй половине 7 июня), а также подхода Моро, решил ограничиться активными оборонительными действиями.
Русские войска перешли в наступление в 10 ч. Войска Багратиона, преодолев сильно пересеченную местность, атаковали дивизию Домбровского и стремительно отбросили ее. На помощь Домбровскому прибыли дивизии Виктора и Рюска, на помощь Багратиону подошла дивизия Швейковского. Завялся упорный бой, в результате которого французы начали отходить за р. Треббия. Наступавшая на левом фланге Швейковского русская дивизия Ферстера быстро сломила сопротивление французов, и также отбросила их за р. Треббия. Сопротивление французских войск было сломлено, настало время вводить резерв.
Однако австрийский генерал Мелас, в нарушение приказа Суворова, направил дивизию на усиление правого (австрийского) крыла, безосновательно опасаясь наступления против Отта. Практически полное бездействие австрийских войск привело к тому, что русские войска нанесли поражение французам значительно меньшими силами, но решительных результатов 7 июня достичь не удалось.
В ночь с 7 на 8 июня к войскам Макдональда присоединились дивизии Монришара и Оливье (около 11 тыс. человек). Значительное численное превосходство французов стало основанием для принятия решения о наступлении. Было создано две группировки: северная (около 14 тыс. человек) – для окружения и уничтожения австрийских войск и южная (около 22 тыс. человек) – для флангового охвата и разгрома русских войск. Утром 8 июня французы перешли р. Треббия и начали общее наступление. Суворов, сразу же заметив обходное движение Домбровского, приказал Багратиону атаковать его. Последовала стремительная штыковая атака.
В коротком рукопашном бою дивизия Домбровского понесла огромные потери, обратилась в бегство и более не принимала участия в сражении. Между тем дивизия Швейковского (около 5 тыс. человек) вела сражение с дивизиями Виктора и Рюска (около 12 тыс. человек) и была обойдена с фланга. Создалось критическое положение. В этот момент на поле боя появился Суворов. Его прибытие вдохновило войска. В то же время отряд Багратиона, приостановив преследование Домбровского, направился на помощь Швейковскому и стремительно ударил во фланг дивизии Рюска. В результате сражения 8 июня французы снова были отброшены за р. Треббия. Обе стороны занимали исходные положения, на которых находились утром 8 июня.
Вечером 8 июня в Пиаченце Макдональд созвал военный совет, который единогласно констатировал безнадежное положение армии, потерявшей половину своего состава. В ночь на 9 июня Неаполитанская армия снялась с позиций. Суворов, узнавший об отходе французов через несколько часов, отдал приказ о преследовании противника.
Безвозвратные потери армии Суворова составили 900 человек, у французов 18 тыс. человек. Сражение завершилось полным разгромом Неаполитанской армии, жалкие остатки которой вошли в состав Итальянской армии (во главе с Моро, затем Жубером), двумя месяцами позже также разгромленной Суворовым в битве при Нови (4 августа 1799 г.).