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 Retirements: 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