Oliveira (Red Bull KTM Tech3) clinched pole for the first time a day earlier in Portimao ahead of Franco Morbidelli, the winner in Valencia a week ago, and impressively surged on to an emphatic victory ahead of the Italian and Jack Miller.
MotoGP 2020: Oliveira feels right at home in Portugal as Mir struggles
Morbidelli (Petronas Yamaha) and Miller (Pramac Racing) tussled behind Oliveira, with the latter taking second having lost out to his rival in Valencia.
But it was a second successive frustrating day for Mir, who, having secured the championship last week, endured difficulties in qualifying and was then forced to abandon the race due to more technical faults as his season ended with a damp squib.
As such, Mir made history in winning just once in a successful championship.
Oliveira’s blistering start was a sign of things to come as he got away in commanding fashion, while further back on the first lap Mir – beginning the race 20th after an electrical issue in qualifying – almost came off amid a crowd.
Francesco Bagnaia (Pramac Racing) was not so fortunate, however, his collision with Mir requiring a trip to the medical centre with a shoulder injury.
Nevertheless, Mir was unable to finish the race, ultimately heading into pits with 10 laps to go as he gestured towards his back wheel.
With Oliveira almost five seconds clear towards the end, the most gripping racing was just in behind him as Miller managed to get the better of Morbidelli this time, holding him off on the final lap.
A three-way scrap ensued in their wake, with Andrea Dovizioso finishing sixth in his final MotoGP race having started back in 12th, while Pol Espargaro (Red Bull KTM) took fourth ahead of Takaaki Nakagami (LCR Honda) and Stefan Bradl (Red Bull KTM) came seventh.
Seven-time champion Valentino Rossi (Yamaha) mustered a 12th-placed finish in his final outing with the team, but the day belonged to Oliveira, victorious for the first time.
1. Miguel Oliveira (Tech 3 KTM) 2. Jack Miller (Pramac Racing) +3.193 3. Franco Morbidelli (Petronas Yamaha) +3.298 4. Pol Espargaro (Red Bull KTM) +12.626 5. Takaaki Nakagami (LCR Honda) +13.318 6. Andrea Dovizioso (Ducati) +15.578 7. Stefan Bradl (Red Bull KTM) +15.738 8. Aleix Espargaro (Aprilia) +16.034 9. Alex Marquez (Repsol Honda) +18.325 10. Johann Zarco (Ducati) +18.596
1. Joan Mir (Suzuki Ecstar) 171 2. Franco Morbidelli (Petronas Yamaha) 158 3. Alex Rins (Suzuki Ecstar) 139 4. Andrea Dovizioso (Ducati) 135 5. Pol Espargaro (Red Bull KTM) 135
1. Suzuki Ecstar 310 2. Petronas Yamaha 248 3. Red Bull KTM 222 4. Ducati 213 5. Pramac Racing 183
Get breaking news alerts.
You have already subscribed