Après la victoire d'Arcole, le général autrichien Josef Alvinczy, trouvant que cette dernière victoire de Bonaparte avait été chanceuse alors que les effectifs français étaient bien inférieurs aux siens (19 000 Autrichiens et moins de 13 000 Français), décide d'attaquer pour soulager Mantoue assiégée.
Chargée de surveiller la vallée de la Brenta, les 3 500 hommes de la brigade Mittrowsky ne participent pas à la bataille[1].
Bonaparte a déployé ses troupes le long de l'Adige à moins de trois jours de marche de la région de Mantoue, Rivoli et Vérone.
On comprend que le général autrichien a fait l'erreur de diviser ses forces. Voulant prendre en tenaille Barthélemy Joubert, le Général Alvinczy avait détaché Franz Joseph de Lusignan sur son flanc droit le long du Monte Baldo oubliant la glace et la neige qui couvrent cette chaine de montagnes en hiver. En proie à des difficultés quasi insurmontables Franz Joseph de Lusignan ne sera d'aucune aide à Rivoli.
Joubert reçoit l'ordre de reprendre la chapelle de San Marco, et il attaque à 4 heures du matin.
Mais les Français du corps de Joubert sont presque défaits, quand vers dix heures, après douze heures d'une marche forcée, la division d'André Masséna arrive sur le champ de bataille et change le cours des événements. Sur l'aile gauche autrichienne, avec en outre les 2 000 hommes de la 32e demi-brigade, Liptay est à nouveau repoussé.
Pendant ce temps, les autres colonnes autrichiennes ont avancé et apparaissent à leur tour sur les lieux du combat. Pour autant, épuisés par des combats commencés à l'aube, et alors que leurs troupes ne sont pas encore toutes arrivées, menacées sur leurs arrières par l'arrivée des troupes du général Gabriel-Venance Rey (3 000 hommes), l'aile gauche autrichienne est rapidement repoussée. Bonaparte lançant ses réserves dans le combat, le recul de l'aile gauche autrichienne se transforme en déroute. Les Autrichiens, paniqués par les tirs venant des hauteurs et par l'explosion de deux de leurs caissons d'artillerie, s'enfuient.
Les troupes françaises se concentrent alors contre le centre autrichien qui cède vers midi.
L'aile droite autrichienne se trouve alors relativement isolée et mal préparée à lutter contre une grande partie du dispositif français. Les Autrichiens se rendent alors massivement.
Anecdote : Napoléon appellera Masséna, qui a fait 148 km en deux jours, l'enfant chéri de la victoire. Il dira même mieux que les légions de César[pas clair]. Sous l'Empire, le , Masséna recevra le titre de duc de Rivoli, en souvenir de son action lors de cette bataille.
Dans la littérature
Dans Le Médecin de campagne d'Honoré de Balzac, l'ex-fantassin Goguelat fait le récit de la campagne d'Italie et cite toutes les batailles : « Nous étions trente mille va-nu-pieds contre quatre-vingt mille fendants d'Allemands, tous beaux hommes, bien garnis, que je vois encore. Alors Napoléon, qui n'était encore que Bonaparte, nous souffle je ne sais quoi dans le ventre. Et l'on marche la nuit, et l'on marche le jour, l'on te les tape à Montenotte, on court les rosser à Rivoli, Lodi, Arcole, Millesimo, et on ne te les lâche pas. Le soldat prend goût à être vainqueur[2]. »