Jorge Lorenzo overtook fellow Spaniard Marc Marquez on the final lap to win the Austrian MotoGP on Sunday.
The two riders traded the lead in the final laps before Ducati's Lorenzo stormed to victory - climbing from fifth to third in the championship.
Honda's Marquez increased his title race lead to 59 points over Valentino Rossi, who was sixth.
Italy's Andrea Dovizioso finished third, while British rider Cal Crutchlow was in fourth place.
Lorenzo, who moves to Honda next season, said: "Ten laps from the end, I decided to attack.
"I was stronger in some areas, like uphill, he was stronger on the second corner. When I passed him, I gave everything and pushed to the limit. It was one of my best victories."
1. Jorge Lorenzo (Spa/Ducati) 39mins 40.688secs
2. Marc Marquez (Spa/Honda) + 0.130secs
3. Andrea Dovizioso (Ita/Ducati) +1.656secs
4. Cal Crutchlow (GB/LCR Honda) +9.434secs
5. Danilo Petrucci (Ita/Ducati) +13.169secs
6. Valentino Rossi (Ita/Yamaha) +14.026secs
7. Dani Pedrosa (Spa/Honda) +14.156secs
8. Alex Rins (Spa/Suzuki) +16.644secs
9. Johann Zarco (Fra/Yamaha Tech) +20.760secs
10. Alvaro Bautista (Spa/Ducati) +20.844secs
1. Marc Marquez (Spa/Honda) 201 points
2. Valentino Rossi (Ita/Yamaha) 142
3. Jorge Lorenzo (Spa/Ducati) 130
4. Andrea Dovizioso (Ita/Ducati) 129
5. Maverick Vinales (Spa/Yamaha) 113
5. Jorge Lorenzo (Spa/Ducati) 105
6. Danilo Petrucci (Ita/Ducati) 105
7. Johann Zarco (Fra/Yamaha Tech3) 104
8. Cal Crutchlow (GB/LCR Honda) 103
9. Andrea Iannone (Ita/Suzuki) 84
10. Alex Rins (Spa/Suzuki) 66