Jorge Lorenzo maintained his unbeaten run at Estoril in MotoGP as he took his first win in two months in the Portuguese Grand Prix.
The Yamaha rider beat his team-mate Valentino Rossi in a head to head fight, the duo having pulled clear of the rest of the field after some close-fought early laps.
It was Rossi in front for most of the first half of the race, and he looked comfortable at first, leading by as much as 1.8 seconds.
But Lorenzo fought back, catching his team-mate and surging past under braking for the first corner on lap 17. Once ahead, he was unstoppable, taking his eighth victory of 2010 - and his first since Brno in August - with an 8.6-second margin.
The race saw drama even before the start, when Ben Spies crashed his Tech 3 Yamaha on the way to the grid and sustained a dislocated left ankle.
The opening laps then featured a spectacular dice between the two Yamahas, the two Ducatis and fast-starter Andrea Dovizioso, who briefly got up to second for Honda.
Ducati's Nicky Hayden battled his way through to lead for a lap before being shuffled back by the Yamaha duo and his team-mate Casey Stoner. The latter had lost ground with a few small errors but then charged up behind the two Yamahas, only to crash at the final corner on lap five.
That moved Hayden into a lonely third, where he seemed set to finish until his pace began to drop off and he was passed by Gresini Honda's Marco Simoncelli and Dovizioso.
The two Italians then mounted a huge battle for the last podium position. Dovizioso seemed to have made the decisive move into the first corner with two laps to go, only for Simoncelli to dive back through at the chicane on the last lap. It was not over though, as Dovizioso tucked in and got a better run through the last corner, drafting back into third by just 0.059s at the line. Hayden, Randy de Puniet (LCR Honda) and Colin Edwards (Tech 3) chased them home.
The still-recovering Dani Pedrosa impressed by getting up to sixth, before tailing off and falling back to eighth for Honda.
Marco Melandri could not turn his season-best sixth on the grid into a strong race result and was ninth for Gresini Honda, almost caught by Hector Barbera as the Aspar Ducati fended off Suzuki's Alvaro Bautista for the final top 10 spot. On a miserable day for Suzuki, Loris Capirossi was the last finisher in 13th.
Carlos Checa produced a plucky ride on his return with Pramac Ducati, running as high as 11th and battling hard with the regular MotoGP midfielders. But he pulled in to retire before half-distance, suffering from arm pump. His team-mate Aleix Espargaro crashed at the chicane on the opening lap, limping away from the accident in some discomfort.
Pos Rider Team Time/Gap 1. Jorge Lorenzo Yamaha 46m17.962s 2. Valentino Rossi Yamaha + 8.629s 3. Andrea Dovizioso Honda + 26.475s 4. Marco Simoncelli Gresini Honda + 26.534s 5. Nicky Hayden Ducati + 27.154s 6. Randy de Puniet LCR Honda + 28.297s 7. Colin Edwards Tech 3 Yamaha + 30.109s 8. Dani Pedrosa Honda + 44.947s 9. Marco Melandri Gresini Honda + 1m13.649s 10. Hector Barbera Aspar Ducati + 1m17.721s 11. Alvaro Bautista Suzuki + 1m17.908s 12. Hiroshi Aoyama Interwetten Honda + 1m33.025s 13. Loris Capirossi Suzuki + 1m39.752s Retirements: Carlos Checa Pramac Ducati 12 laps Casey Stoner Ducati 4 laps Aleix Espargaro Pramac Ducati 0 laps Ben Spies Tech 3 Yamaha DNS