Casey Stoner again held off Jorge Lorenzo to win in Portugal and take the lead in the MotoGP standings.
Defending champion Stoner led for the whole race and, despite Lorenzo closing to within a few bike lengths at the halfway point, the Australian was able to win his second successive race.
Dani Pedrosa was third, with Andrea Dovizioso fourth ahead of British team-mate Cal Crutchlow.
Stoner now has a one-point lead over Lorenzo in the championship.
The race followed a similar pattern to as Stoner made a lightning start to open up a commanding lead on the opening lap.
Lorenzo was able to move up from fourth on the grid to second as Pedrosa had a scare through turn one, while Crutchlow was shuffled back from his qualifying spot of third to fifth in the opening stages.
Stoner set a searing pace in the opening five laps and looked set for a big win, but as in both of the previous races this season, Lorenzo was able to close down the Australian as the race wore on.
Lorenzo was able to close to within one tenth of a second on lap 11, but Stoner eventually opened up to win by 0.798 seconds.
Stoner told BBC Sport: "I was under pressure throughout the race. "I felt good on the first few laps but then we had severe chattering with the bike.
"In the middle laps I didn't feel confident and I couldn't push. I just tried to keep Jorge behind me we were lucky to hold on for the win in the end."
The win was Stoner's 35th in MotoGP and means he has now won at every circuit on the current calendar.
Repsol Honda team-mate Pedrosa picked up his 100th grand prix podium in third as Crutchlow - who struggled with braking all weekend - was beaten by team-mate Dovizioso for the first time since his move to the Tech 3 Yamaha team over the winter.
Crutchlow told BBC Sport: "I just couldn't stop the bike.
"I was closing in on Dovi all the time but I just couldn't get it stopped into the corners as I was still traveling too quickly.
"It was a real problem. But it is something we will look at."
In the day's Moto2 race, Marc Marquez extended his lead at the top of the standings by beating Pol Espargaro, with Thomas Luthi third.
Scott Redding, who qualified third, went backwards to finish 11th, one place behind fellow Brit Bradley Smith.
Sandro Cortese won in Moto3, narrowly ahead of Maverick Vinales, with Luis Salom in third.
Portugal MotoGP results:
1. Casey Stoner (Aus) Repsol Honda 45:37.513
2. Jorge Lorenzo (Spa) Yamaha 45:38.934
3. Dani Pedrosa (Spa) Repsol Honda 45:41.124
4. Andrea Dovizioso (Ita) Tech 3 Yamaha 45:51.359
5. Cal Crutchlow (GB) Tech 3 Yamaha 45:54.203
6. Alvaro Bautista (Spa) Gresini Honda 45:59.397
7. Valentino Rossi (Ita) Ducati 46:04.310
8. Ben Spies (USA) Yamaha 46:10.775
9. Stefan Bradl (Ger) LCR Honda 46:13.380
10. Hector Barbera (Spa) Pramac Ducati 46:30.876