World champion Jorge Lorenzo held off a strong challenge from Yamaha team-mate Valentino Rossi to win the Portuguese MotoGP for the third year in a row.
The Yamaha rider, 23, who took the world crown from Rossi in Sepang on 10 October, came out on top again.
Honda rider Andrea Dovizioso grabbed third on the line in Estoril in the penultimate race of the season.
Lorenzo overtook Rossi with 11 laps to go before speeding clear for an 8.6-second victory over the Italian.
It was the Spaniard's first victory in two months and he can wrap up the season with a win on home soil in Valencia next Sunday.
Earlier, German rider Stefan Bradl of Suter edged Alex Baldolini to win his first Moto2 race of the season.
The race was held in perfect, dry conditions, but that did not prevent Ducati's Casey Stoner, fourth on the starting grid, from slithering off the circuit after just five laps.
Stoner subsequently lost his third position in the overall standings to Rossi.
For Lorenzo, who started on pole, this was his eighth race win of the campaign and it pushed him up to 368 points. Dani Pedrosa, only eighth here, is second on 236.
Rossi and Lorenzo battled for control from the start, but once Lorenzo hit the front on lap 17 of 28 he never looked back.
Lorenzo said afterwards: "Valentino overtook me [after four laps] and got away from me for a while, but I stayed calm and began reeling him in bit by bit."
Rossi said: "It's a particular kind of race. On the dry surface I lacked some speed and I couldn't keep up with Jorge."