Na twee dagen met extreem slecht weer en alle vier de vrije trainingen op een kletsnatte baan te hebben getraind was de warm-up sessie voor de MotoGP van groot belang voor het vinden van de juiste afstelling. Fabio Quartararo zette in de warm-up al de toon en wist dat hij een goede kans op de overwinning had, mits hij niet op het rechte stuk door de brute kracht van de Ducati's zou worden overstemd.
Bij het doven van de rode lichten nam Joan Rins echter de kopstart in de race en leek meteen een gat met de eveneens goed gestarte Fabio Quartararo te kunnen slaan, terwijl Johann Zarco vanaf de pole position terugviel naar de vierde plaats achter Jack Miller.
De twee Ducati coureurs raakten verstrikt in het gevecht om de derde plaats en waren niet in staat om het tempo van Quartararo te volgen, die alleen rijdend op de baan zienderogen op Joan Mir inliep, vervolgens in de vierde ronde onbedreigd de leiding in de race nam, om daarna met zevenmijlslaarzen afstand van de rest van het veld te nemen.
Terwijl Quartararo onbedreigd de rondjes tot de finishvlag kon aftellen ontstond achter hem een intense strijd om de tweede plaats tussen Rins, Miller en Zarco, die in de tweede ronde weer opklom naar de derde plaats.
Dertien ronden lang wist Joan Mir de druk van Zarco te weerstaan, maar moest daarna het hoofd buigen voor Johann Zarco en kwam vervolgens onder druk van Jack Miller te staan. Twee ronden lang zat Miller in het achterwiel, rook bij het ingaan van de 19e ronde zijn kans en probeerde Mir uit te remmen, maar ging onderuit en nam in zijn val Mir ook mee.
Dat gaf de derde plaats ineens in handen van Aleix Espargaro, die na een zeer constante race het gat met Zarco leek te kunnen dichten en in de slotfase zelfs binnen 6 tiende van een seconde kwam, maar het beste van zijn achterband had gevergd en daardoor geen aanval meer kon doen.
Met een voorsprong van ruim 5 seconden op Johann Zarco schreef Fabio Quartararo zijn eerste overwinning van het seizoen bij - tevens de eersete Japanse overwinning van het seizoen - en is daarmee de nieuwe leider in het WK, met gelijk aantal punten met Alex Rins, op 3 punten gevolgd door Aleix Espargaro.
MotoGP Portimao, uitslag race:
| Rijder | Team | Merk | km/u | Uitslag | ||
| 1 | Fabio Quartararo | FRA | Monster Energy Yamaha MotoGP | Yamaha | 165.3 | 41'39.6110 |
| 2 | Johann Zarco | FRA | Pramac Racing | Ducati | 164.9 | +5.409 |
| 3 | Aleix Espargaro | ESP | Aprilia Racing | Aprilia | 164.9 | +6.068 |
| 4 | Alex Rins | ESP | Team SUZUKI ECSTAR | Suzuki | 164.7 | +9.633 |
| 5 | Miguel Oliveira | PRT | Red Bull KTM Factory Racing | KTM | 164.4 | +13.573 |
| 6 | Marc Marquez | ESP | Repsol Honda Team | Honda | 164.2 | +16.163 |
| 7 | Alex Marquez | ESP | LCR Honda Castrol | Honda | 164.2 | +16.183 |
| 8 | Pecco Bagnaia | ITA | Ducati Lenovo Team | Ducati | 164.2 | +16.511 |
| 9 | Pol Espargaro | ESP | Repsol Honda Team | Honda | 164.2 | +16.769 |
| 10 | Maverick Viñales | ESP | Aprilia Racing | Aprilia | 164.1 | +18.063 |
| 11 | Andrea Dovizioso | ITA | WithU Yamaha RNF MotoGP Team | Yamaha | 163.4 | +29.029 |
| 12 | Luca Marini | ITA | Mooney VR46 Racing Team | Ducati | 163.4 | +29.249 |
| 13 | Franco Morbidelli | ITA | Monster Energy Yamaha MotoGP | Yamaha | 163.1 | +33.354 |
| 14 | Remy Gardner | AUS | Tech3 KTM Factory Racing | KTM | 162.7 | +40.205 |
| 15 | Marco Bezzecchi | ITA | Mooney VR46 Racing Team | Ducati | 162.3 | +46.052 |
| 16 | Takaaki Nakagami | JPN | LCR Honda IDEMITSU | Honda | 162.1 | +49.569 |
| 17 | Darryn Binder | RSA | WithU Yamaha RNF MotoGP Team | Yamaha | 162.0 | +50.303 |
| DNF | ||||||
| Lorenzo Savadori | ITA | Aprilia Racing | Aprilia | 161.2 | +1 ronde | |
| Fabio Di Giannantonio | ITA | Gresini Racing MotoGP | Ducati | 163.4 | +4 ronden | |
| Enea Bastianini | ITA | Gresini Racing MotoGP | Ducati | 164.9 | +7 ronden | |
| Joan Mir | ESP | Team SUZUKI ECSTAR | Suzuki | 164.8 | +7 ronden | |
| Jack Miller | AUS | Ducati Lenovo Team | Ducati | 161.2 | +8 ronden | |
| Brad Binder | RSA | Red Bull KTM Factory Racing | KTM | 163.9 | +16 ronden | |
| Jorge Martin | ESP | Pramac Racing | Ducati | 162.5 | +21 ronden |
Tussenstand:
| Rijder | Team | Merk | Punten | ||
| 1 | Fabio Quartararo | FRA | Monster Energy Yamaha MotoGP | Yamaha | 69 |
| 2 | Alex Rins | ESP | Team SUZUKI ECSTAR | Suzuki | 69 |
| 3 | Aleix Espargaro | ESP | Aprilia Racing | Aprilia | 66 |
| 4 | Enea Bastianini | ITA | Gresini Racing MotoGP | Ducati | 61 |
| 5 | Johann Zarco | FRA | Pramac Racing | Ducati | 51 |