Reigning world champion Marc Marquez won a thrilling British MotoGP at Silverstone to make it 11 wins in 12 races this season.
The Honda rider, 21, overtook last year's winner Jorge Lorenzo on a Yamaha with three laps to go to cross the line 0.732 seconds in front.
Yamaha's Valentino Rossi completed the podium placings after fending off Honda's Dani Pedrosa.
Marquez is the first rider to win 11 races in a season since Rossi in 2005.
The Spaniard gained revenge for losing out to two-time world champion and compatriot Lorenzo on the last lap at Silverstone last year.
|"Once I hit the front I rode like a demon. However, once Marc passed me towards the end of the race I was too tired to react."|
Despite dominating practice and qualifying on pole, Marquez lost the lead to Lorenzo before regaining it with eight laps to go.
Marquez had greater power but was struggling with his tyres at corners and went wide three laps later, allowing Lorenzo to get back in front.
It was a superb and engrossing contest highlighted by the exchange with three laps to go as Marquez looked to have got the better of Lorenzo on one corner only for the door to be shut on him.
However, Marquez was not to be denied and took the lead on the next corner and for once Lorenzo had no answer.
Marquez said: "Jorge was stronger than I expected and we had a great battle.
"When I passed him the first time I expected to pull away, but I did a mistake and he came back.
"It was a really nice battle and I was thinking about last year's race, so I really wanted to beat him."
Lorenzo, 27, was satisfied with his second place after admitting his Yamaha struggled to match the power of the Honda bike.
He said: "Marc has the power but as I have said in racing sometimes you have surprises.
"Once I hit the front I rode like a demon. However, once Marc passed me towards the end of the race I was too tired to react."
|MotoGP championship standings|
|Marc Marquez (Spa) Repsol Honda||288 points|
|Dani Pedrosa (Spa) Repsol Honda||199 points|
|Valentino Rossi (Ita) Yamaha||189 points|
|Jorge Lorenzo (Spa) Yamaha||157 points|
|Andrea Dovizioso (Ita) Ducati||129 points|
Lorenzo's team-mate Rossi gained his first podium at Silverstone but was more than eight seconds behind the winner.
The Italian won a three-way tussle for third with Spain's Pedrosa and fellow Italian Andrea Dovizioso on a Ducati.
Scott Redding was the highest-placed Briton finishing a creditable 10th on his Honda Gresini, while Yamaha Tech3 rider Bradley Smith was a lap behind when he suffered a mechanical failure early in the race.
Marquez extends his lead in the championship to 89 points over team-mate Pedrosa, with Rossi closing the gap for second to 10 points with six races remaining.
Spain's Esteve Rabat won the Moto2 race, while another Spaniard, Alex Rins, denied the Marquez family a double by beating Marc's younger brother Alex by just 0.011 in Moto3.
The next race is in San Marino at Rimini on 14 September.
British MotoGP result:
1. Marc Marquez (Spa) Honda 40'51.835secs
2. Jorge Lorenzo (Spa) Yamaha +0.732
3. Valentino Rossi (Ita) Yamaha +8.519
4. Dani Pedrosa (Spa) Honda +8.694
5. Andrea Dovizioso (Ita) Ducati +9.238
6. Pol Espargaro (Spa) Yamaha +24.746
7. Stefan Bradl (Ger) Honda +26.717
8. Andrea Iannone (Ita) Ducati +26.910
9. Aleix Espargaro (Spa) Yamaha +33.455
10. Scott Redding (GB) Honda +39.094