Na door overmoed op zaterdagmiddag een zekere overwinning in de Sprint door een crash in bocht 10 uit handen te hebben gegeven was Alex Marquez op zondagmiddag gebrand zich te revancheren. Bij de start schoot de Gresini-rijder weg vanaf pole en leek even de leiding te houden, maar broer Marc remde hem in bocht 1 brutaal uit en pakte de kop op de fabrieks-Ducati.
Drie ronden lang leek Marc het tempo te kunnen dicteren, maar Álex had geen zin om achter zijn broer te blijven hangen en nam aan het begin van ronde 4 de leiding terug, op korte afstand gevolgd door Pedro Acosta, die bij de start de derde plek had gegrepen ten koste van Fabio Quartararo, en Tech3 coureur Enea Bastianini die vanaf P9 razendsnel naar de vierde plaats was opgerukt.
Het viertal sloeg direct een gat. Pedro Acosta deelde meermaals speldenprikken aan Marc Marquez uit, maar had als enige van de vier gekozen voor de Soft compound achterband en dat bleek een verkeerde keuze te zijn, waardoor hij na in de 11e ronde door Bastianini te zijn ingehaald gaandeweg steeds meer terrein verloor.
Aan de kop van het veld bleef de strijd tussen de Márquez-broers rondenlang onder een halve seconde. Opgeklommen naar P3 had Bastianini niet het tempo om zich met de Ducati-tweestrijd te bemoeien, waardoor de strijd om de overwinning tussen de Marquez' broeders zou gaan.
Marc zette een tandje bij, maar Alex hield stand en deelde op zijn beurt de laatste vijf ronden een genadeklap uit. Twee ronden voor het einde was de strijd beslist: Álex Márquez pakte zijn tweede MotoGP-zege, 1,74 seconde voor Marc.
Met zijn overwinning bracht Alex bovendien zijn achterstand in het WK op broer Marc tot 182 punten terug, waardoor de strijd om de wereldtitel pas op z'n vroegst in Japan kan worden beslist. Bastianini finishte op de derde plaats en scoorde daarmee zijn eerste MotoGP-podium met KTM. Acosta viel in de slotfase steeds verder terug, maar wist er met een totaal versleten achterband toch nog een keurige vierde plaats uit te slepen.
Achter de KTM's had zich rondenlang een felle strijd om de vijfde plek ontvouwd tussen Quartararo en de twee Honda's van Luca Marini en Johann Zarco. Na in de vijfde ronde Morini voorbij te zijn gegaan ging Zarco vier ronden later ook zijn landgenoot voorbij en leek daarmee de strijd om P5 in zijn voordeel te beslechten, om drie ronden later in bocht 10 onderuit te gaan.
Dat gaf de vijfde plaats in handen van Marini, die Quartararo die ronde voorbij was gegaan, maar het werd helaas geen tweede P5 op rij voor de halfbroer van Valentino Rossi: met nog twee ronden te gaan had hij het beste van zijn banden gevergd en viel hij terug naar de 8e plaats achter Pecco Bagnaia, die een sensationele inhaalrace had gereden.
Vanaf P21 op de grid (de laatste plek op de 7e rij) stormde de tweevoudig kampioen al in de eerste ronde naar P12, profiteerde in ronde 2 van crashes van Marco Bezzecchi en Fabio Di Giannantonio en werkte zich gestaag verder naar voren. Uiteindelijk kwam Pecco als zevende over de streep.
MotoGP Catalunya, uitslag race:
| Rijder | Team | Merk | Uitslag | ||
| 1 | Alex Marquez | ESP | BK8 Gresini Racing MotoGP | Ducati | 24 ronden |
| 2 | Marc Marquez | ESP | Ducati Lenovo Team | Ducati | +1.740 |
| 3 | Enea Bastianini | ITA | Red Bull KTM Tech3 | KTM | +5.562 |
| 4 | Pedro Acosta | ESP | Red Bull KTM Factory Racing | KTM | +13.373 |
| 5 | Fabio Quartararo | FRA | Monster Energy Yamaha MotoGP Team | Yamaha | +14.409 |
| 6 | Ai Ogura | JPN | Trackhouse MotoGP Team | Aprilia | +15.055 |
| 7 | Pecco Bagnaia | ITA | Ducati Lenovo Team | Ducati | +16.048 |
| 8 | Luca Marini | ITA | Honda HRC Castrol | Honda | +16.372 |
| 9 | Miguel Oliveira | POR | Prima Pramac Yamaha MotoGP | Yamaha | +16.937 |
| 10 | Jorge Martin | ESP | Aprilia Racing | Aprilia | +18.492 |
| 11 | Raul Fernandez | ESP | Trackhouse MotoGP Team | Aprilia | +19.489 |
| 12 | Joan Mir | ESP | Honda HRC Castrol | Honda | +20.159 |
| 13 | Maverick Vinales | ESP | Red Bull KTM Tech3 | KTM | +22.792 |
| 14 | Jack Miller | AUS | Prima Pramac Yamaha MotoGP | Yamaha | +24.351 |
| 15 | Fermin Aldeguer | ESP | BK8 Gresini Racing MotoGP | Ducati | +24.592 |
| 16 | Somkiat Chantra | THA | IDEMITSU Honda LCR | Honda | +37.393 |
| 17 | Aleix Espargaro | ESP | Honda HRC Test Team | Honda | +43.202 |
| DNF | |||||
| Franco Morbidelli | ITA | Pertamina Enduro VR46 Racing Team | Ducati | +3 ronden | |
| Lorenzo Savadori | ITA | Aprilia Racing | Aprilia | +5 ronden | |
| Alex Rins | ESP | Monster Energy Yamaha MotoGP Team | Yamaha | +10 ronden | |
| Fabio Di Giannantonio | ITA | Pertamina Enduro VR46 Racing Team | Ducati | +12 ronden | |
| Johann Zarco | FRA | CASTROL Honda LCR | Honda | +14 ronden | |
| Brad Binder | RSA | Red Bull KTM Factory Racing | KTM | +18 ronden | |
| Marco Bezzecchi | ITA | Aprilia Racing | Aprilia | +23 ronden |
Tussenstand:
| Rijder | Team | Merk | Punten | ||
| 1 | Marc Marquez | ESP | Ducati Lenovo Team | Ducati | 487 |
| 2 | Alex Marquez | ESP | BK8 Gresini Racing MotoGP | Ducati | 305 |
| 3 | Pecco Bagnaia | ITA | Ducati Lenovo Team | Ducati | 237 |
| 4 | Marco Bezzecchi | ITA | Aprilia Racing | Aprilia | 197 |
| 5 | Pedro Acosta | ESP | Red Bull KTM Factory Racing | KTM | 183 |