Dani Pedrosa ended Jorge Lorenzo's run of Estoril victories by passing his countryman late in the Portuguese Grand Prix and going on to claim his first win of the season.
With qualifying star Marco Simoncelli's race ending in anti-climax when he crashed on the first lap, the GP became a tense battle between Lorenzo and Pedrosa.
For lap after lap, Honda rider Pedrosa stalked the leading Yamaha, with the gap between them rarely more than a tenth of a second.
But Pedrosa did not seem to have enough speed in hand to complete a move on Lorenzo, repeatedly looking to the inside on the pits straight without ever really threatening.
Then, out of the blue with four laps to go, Pedrosa got a better run out of the final corner and swept past Lorenzo into Turn 1. Once ahead, there was no stopping him, with a string of fastest laps allowing the Honda to edge away - as Pedrosa proved that his recent fitness issues were behind him by getting quicker and quicker going into the closing laps. He became the first man to beat Lorenzo at Estoril since the latter came into MotoGP and moved to within four points of the championship-leading Yamaha rider.
Second-place starter Simoncelli (Gresini Honda) lost out to Pedrosa off the line, and only got as far as Turn 4 before having a violent high-side that ended his promising weekend.
Avoiding that accident cost Casey Stoner a few tenths and allowed the top two to make a break from the second Honda. At first Stoner was able to match Lorenzo and Pedrosa's pace, but he later faded to finish a lonely third.
Valentino Rossi got up to fourth for Ducati on lap one and then spent the race fending off Honda's Andrea Dovizioso. It looked like the former champion had the place in the bag until Dovizioso ramped up his attack in the closing laps and finally snatched fourth in a drag race to the line.
Colin Edwards finished sixth for Tech 3 Yamaha, with Hiroshi Aoyama emerging from an early battle with Edwards' team-mate Cal Crutchlow and Rossi's team-mate Nicky Hayden to take seventh for Gresini.
Randy de Puniet completed the top 10 on the Pramac Ducati. His team-mate Loris Capirossi fleetingly held seventh following a good start but faded to 12th, while Alvaro Bautista heroically made it to the end for Suzuki in 13th just six weeks after breaking his leg in Qatar.
Yamaha's Ben Spies was among the retirements. He fell down the order running wide early on, and eventually crashed out when 10th just before half-distance.