Franco Morbidelli had appeared set to head the grid for the final race of the MotoGP season, the Italian consistently going quickest during the second session on Saturday.
However, Oliveira produced a stunning last lap during an eventful final minute to proceedings, his time of one minute 38.892 seconds enough to make him the seventh different rider to claim pole in 2020.
As for Mir, he will start way back in 20th position after a cancelled lap time saw him fail to even make it out of Q1.
The Spaniard clinched the title in Valencia last time out and while “100 per cent” determined to deliver the constructors’ championship for Suzuki this week, he will have work to do from the back of the pack.
Oliveira had no such issues as he became the first Portuguese rider to sit on pole in the premier class, raising hopes he can add to his maiden win at the Styrian Grand Prix earlier this year.
Morbidelli was second with Jack Miller completing the front row, while Cal Crutchlow – competing for the final weekend as a full-time MotoGP rider before taking up a testing role with Yamaha – claimed fourth on the grid.
Alex Rins was the leading Suzuki rider but was down in 10th, the Spaniard having Takaaki Nakagami – who crashed in the final practice ahead of qualifying – and Andrea Dovizioso with him on the fourth row.
Valentino Rossi, meanwhile, will begin his final outing for the factory Yamaha team from 17th.
Portugal is hosting a race on the calendar for the first time since 2012, though the venue has switched from Estoril.
1. Miguel Oliveira (Red Bull KTM Tech 3) 1:38.892 2. Franco Morbidelli (Petronas Yamaha) +0.044s 3. Jack Miller (Pramac Racing) +0.146s 4. Cal Crutchlow (LCR Honda) +0.264s 5. Fabio Quartararo (Petronas Yamaha) +0.307s 6. Stefan Bradl (Repsol Honda) +0.312s 7. Johann Zarco (Esponsorama Racing) +0.346s 8. Maverick Vinales (Monster Energy Yamaha) +0.368s 9. Pol Espargaro (Red Bull KTM Factory Racing) +0.392s 10. Alex Rins (Team Suzuki Ecstar) +0575s 11. Takaaki Nakagami (LCR Honda) +0.639s 12. Andrea Dovizioso (Ducati) +0.695s
Get breaking news alerts.
You have already subscribed