Valentino Rossi has beaten Yamaha team-mate Jorge Lorenzo in a thrilling finish to MotoGP's Grand Prix of Catalunya.
The two riders completely dominated the Barcelona race and fought tooth and nail in the last three laps of the race, with the outcome being set at the very last corner.
Italy's Rossi took the lead back from local hero Lorenzo at the first turn with three laps to go. Exactly one lap later Lorenzo tried to take the lead back and went ahead on the straight, but Rossi managed to outbrake the Spaniard on the outside of the track and keep the position.
Lorenzo, however, made his move stick at the beginning of the last lap. Rossi managed to respond in the overtaking spot in the middle of the lap, but went wide and Lorenzo kept the lead.
But at the entry of the last corner the reigning world champion sneaked through and somehow managed to find the apex, preventing Lorenzo from getting back ahead.
Best of the rest was Ducati's Casey Stoner, who finished more than eight seconds behind the leading pair, but managed to held of the challenge from Honda's Andrea Dovizioso and beat him by half a tenth.
Today's result means that the top three riders now jointly lead the championship at 106 points after six races in the season.
Loris Capirossi took fifth place with his Suzuki, ahead of Dani Pedrosa's works Honda and Colin Edwards's Tech 3 Yamaha.
Randy de Puniet (LCR Honda), Mika Kallio (Pramac Ducati) and Nicky Hayden (Ducati) rounded up the top ten.
Yuki Takahashi crashed his Scot Honda into the barriers during the first lap, while Toni Elias fell from his Gresini Honda on lap 10 of the 25-lap race having quickly fallen back from his fifth-place start.
CLASSIFIED: Pos Rider Bike Time 1. Valentino Rossi Yamaha 43m11.897s 2. Jorge Lorenzo Yamaha + 0.095s 3. Casey Stoner Ducati + 8.884s 4. Andrea Dovizioso Honda + 8.936s 5. Loris Capirossi Suzuki + 19.831s 6. Daniel Pedrosa Honda + 22.182s 7. Colin Edwards Yamaha + 23.547s 8. Randy de Puniet Honda + 25.265s 9. Mika Kallio Ducati + 31.797s 10. Nicky Hayden Ducati + 33.593s 11. Chris Vermeulen Suzuki + 36.683s 12. Alex de Angelis Honda + 36.874s 13. James Toseland Yamaha + 39.433s 14. Marco Melandri Kawasaki + 44.788s 15. Sete Gibernau Ducati + 46.754s 16. Niccolo Canepa Ducati + 55.873s 17. Gabor Talmacsi Honda +1m27.640s NOT CLASSIFIED/RETIREMENTS: Rider Bike Laps Toni Elias Honda 9 Yuki Takahashi Honda 0 FASTEST LAP: Stoner, 1m42.858s on lap 2