Casey Stoner moved into the lead of the 2012 MotoGP world championship for the first time after holding off Jorge Lorenzo to win at Estoril.
The Australian did just enough to keep his lead from the start, and was then able to stretch away rapidly over the opening laps.
Yamaha's Jorge Lorenzo found himself 1.4 seconds down after just three laps, but as his tyres began to warm he gradually closed the gap - breaking the lap record in the process - until he was right on Stoner's tail with 16 laps still to go.
At that point it seemed the Spaniard would be a real victory threat, but Stoner (Honda) managed to pick up his pace, control the gap and ultimately seal his second straight win.
Lorenzo followed him home, just a couple of bike-lengths behind, with the second works Honda of Dani Pedrosa a similarly small margin back in third.
Pedrosa had taken the lead momentarily at the start, but a big wobble allowed Stoner and Lorenzo to slip by on the run down to the second turn.
From there the Spaniard never fell away from the lead battle but was equally never able to asset himself as a serious threat.
Fourth was collected by Tech 3 Yamaha's Andrea Dovizioso following a race-long battle with stablemate Cal Crutchlow.
The Briton shadowed Dovizioso for much of the race, but after running wide four laps from the end he was not quite able to get back in touch and finished fifth.
Behind him Alvaro Bautista (Gresini Honda) and Valentino Rossi (Ducati) had relatively quiet rides to sixth and seventh.
Both were originally part of a five-bike fight for fourth, but as the field separated they found themselves in increasingly comfortable positions. It is only the second time in the past nine months that Rossi has finished inside the top eight.
There was no such joy for his works Ducati team-mate Nicky Hayden, who came home 11th.
Yamaha's Ben Spies was another struggling on factory machinery. He originally ran as high as fourth but slipped back alarmingly and ended up duelling with LCR Honda's Stefan Bradl for eighth.
Results - 28 laps:
Pos Rider Team/Bike Time/Gap
1. Casey Stoner Honda 45m37.513s
2. Jorge Lorenzo Yamaha + 1.421s
3. Dani Pedrosa Honda + 3.621s
4. Andrea Dovizioso Tech 3 Yamaha + 13.846s
5. Cal Crutchlow Tech 3 Yamaha + 16.690s
6. Alvaro Bautista Gresini Honda + 21.884s
7. Valentino Rossi Ducati + 26.797s
8. Ben Spies Yamaha + 33.262s
9. Stefan Bradl LCR Honda + 35.867s
10. Hector Barbera Pramac Ducati + 53.363s
11. Nicky Hayden Ducati + 1m02.630s
12. Aleix Espargaro Aspar Aprilia + 1m20.736s
13. Randy de Puniet Aspar Aprilia + 1m23.483s
14. Michele Pirro Gresini FTR/Honda + 1m37.905s
15. Danilo Petrucci Ioda-Aprilia + 1 lap
Karel Abraham Cardion Ducati 23 laps
James Ellison Paul Bird Aprilia 18 laps
Yonny Hernandez Avintia FTR-Kawasaki 16 laps
Mattia Pasini Speed Master Aprilia 11 laps
Ivan Silva Avintia Inmotec-Kawasaki 11 laps