The Suzuki Ecstar rider pulled out a lead once ahead and came across the line first, making the Spaniard the ninth different winner of the season.
With Rins just 0.651s behind as he kept his team-mate in his sights after being passed on lap 17, Suzuki gained their first 1-2 since the German GP round of the 1982 season.
Victory for Mir moves his title advantage to 37 points as the Yamaha riders saw their terrible fortunes this weekend continue. Fabio Quartararo reamins second after his early fall, now on the same points tally as Rins.
Polesitter Pol Espargaro tried to keep in touch but could not match the blue blurs ahead of him, he kept the final podium spot for the Red Bull KTM Factory team.
Takaaki Nakagami put in a strong late performance to chase down the Spaniard, but left it just too late. The Japanese rider was the top Honda and independent finisher for LCR.
Miguel Oliveira moved into fourth early on and though he had to give best to a flying Nakagami he made sure not to slip any further down the pack, his finish ensuring both Red Bull KTM Tech 3 bikes secured a top five finish.
Jack Miller climbed to fifth and was the best of the Ducati riders on track for Pramac after a strong showing earlier in the weekend in the wet.
Brad Binder had a long lap penalty to serve in the race for his move on Miller last race. The Red Bull Factory man soon picked the places he lost back up, the highlight of which was a tight pass on Danilo Petrucci. The South African also gained from falls ahead of him to reach seventh by the chequered flag at a track where he was victorious in Moto2 last season.
Andrea Dovizioso was embattled in a war for eighth with Alex Marquez. After using his Ducati power on the straight, he pulled a tough move on Marquez, braking in front of him and forcing him onto the wet patch at turn one to avoid contact. The Honda rider slid on the damp and exited into the gravel with four laps remaining.
Johann Zarco faded to ninth for Esponsorama Racing with Petrucci mounting a late charge to push his way back into a top ten finish for Ducati.
Franco Morbidelli’s hard rear tyre gamble didn’t pay off – he was the top Yamaha rider down in eleventh for Petronas.
Marquez’s exit left Stefan Bradl the top factory Honda finisher in twelfth, with only fourteen riders completing race distance.
Maverick Vinales had experienced one of his toughest weekends, with Yamaha team members missing after a positive Coronavirus test and a pit lane start for using a sixth engine, his back was already against the wall before turning a wheel in the race.
The action ahead allowed him to grab a points finish in 13th.
Aleix Espargaro was moved up to sixth on the grid overnight, but then handed a penalty for ignoring a blue flag in pit lane during Q2. That moved the Aprilia man to ninth. It all became academic when he performed a perfectly synchronised crash with Fabio Quartararo on the first lap.
The Frenchman remounted to finish for 14th for Petronas.
Valentino Rossi couldn’t bring any cheer for Yamaha either – off the pace after missing Friday and qualifying down in 18th, the Italian made up a handful of places only on only for his Monster Energy machine to break down after five laps.
Lorenzo Savardori was another early faller. Repacing Bradley Smith for the final races, he remounted to add to his experience on the Aprilia, but retired to the pits on the last lap.