Alex Rins snatched a dramatic victory on the line on his Suzuki to win the British Grand Prix ahead of MotoGP world champion Marc Marquez.
Marquez appeared to have held off the younger Spaniard, only for Rins to produce a spectacular piece of riding for his second win of the season.
But Marquez still extended his lead in the Championship to 78 points after second-placed Andrea Dovizioso of Italy suffered a bad crash on the first lap.
Britain’s Cal Crutchlow was sixth.
Marquez led virtually all the way round and was on course for his seventh win of the season, but he could not shrug off Rins.
It looked like the 23-year-old from Barcelona was going to finish agonisingly close until he zoomed past Marquez with the last manoeuvre of the race.
Another Spaniard, Maverick Vinales, was third, with MotoGP legend Valentino Rossi a place further back.
The two Spaniards are not on good terms, so the emotions were stark on the podium afterwards as Rins celebrated his second win of the year, having won the Grand Prix of the Americas in April.
“This is unbelievable,” said Rins. “I don’t have words to explain this.”
It was another disappointment for Marquez, who had begun on pole position, as the same thing happened to him last time out in Austria.
But the Honda rider is still 78 points clear of nearest challenger Dovizioso in the riders’ standings with only seven races remaining and on course for his sixth world title.
Rins climbs to third following his victory, while Crutchlow remains ninth overall after picking up 10 points for finishing sixth.
Dovizioso suffered his spectacular crash on the first lap as he went into the back of Frenchman Fabio Quartararo and went flying off his bike, which caught fire.
Luckily, nothing was broken but the Italian has been taken to Coventry Hospital for further checks after he sustained a severe blow to the head that caused a momentary loss of memory.
British Grand Prix Race Classification:
1. Alex Rins (Spa, Suzuki) 40mins 12 sec.799
2. Marc Marquez (Spa, Honda) +0.013
3. Maverick Vinales (Spa, Yamaha) +0.620
4. Valentino Rossi (Ita, Yamaha) +11.439
5. Franco Morbidelli (Ita, Yamaha) +13.109
6. Cal Crutchlow (GB, Honda) +19.169
7. Danilo Petrucci (Ita, Ducati) +19.682
8. Jack Miller (Aus, Pramac) +20.318
9. Pol Espargaro (Spa, KTM) +21.079
10. Andrea Iannone (Ita, Aprilia) +25.144
Moto GP World Standings:
1. Marc Marquez (Spa, Honda) 250 points
2. Andrea Dovizioso (Ita, Ducati) 172
3. Alex Rins (Spa, Suzuki) 149
4. Danilo Petrucci (Ita, Ducati) 144
5. Maverick Vinales (Spa, Yamaha) 118
6. Valentino Rossi (Ita, Yamaha) 116
7. Jack Miller (Aus, Pramac) 95
8. Fabio Quartararo (Fra, Yamaha) 92
9. Cal Crutchlow (GB, Honda) 88
10. Franco Morbidelli (Ita, Yamaha) 69