Marc Marquez endured a race-long battle with Jorge Lorenzo from start to finish before claiming victory in the British Grand Prix at Silverstone.
The 21-year-old Spaniard, on his Repsol Honda, started the race from pole position but dropped into second on the opening lap as his compatriot took charge.
But the lead changed hands between the duo a number of times after championship leader Marquez went in front with seven laps to go.
Marquez was pushed back to second but fought back hard and after shoulder-barging and a touch with Movistar Yamaha's Lorenzo, he came out on top to pick up an impressive 11th win of this season's MotoGP World Championship in 40 minutes 51.835 seconds, with Lorenzo's team-mate Valentino Rossi coming home third.
After Lorenzo took the early lead, Marquez put him under increasing pressure as the race moved on and the front-running two were being tracked by Andrea Dovizioso on his Ducati, Rossi, Honda's Dani Pedrosa and Britain's Bradley Smith in sixth on his Yamaha.
Rossi began to make inroads and moved into third five laps in, with Pedrosa also overtaking Dovizioso. Rossi was put under pressure four laps later by Pedrosa, who took third back.
At the same time Smith looked in trouble and started to drop down the field before pitting with what turned out to be a rear tyre problem, with fellow Briton Scott Redding (Honda) moving up to 12th at the halfway stage.
The fight for third was still going strong between Pedrosa, Rossi and Dovizioso before six-times world champion Rossi took advantage of the Spaniard going wide to reclaim third with fellow Italian Dovizioso moving up to fourth as Smith rejoined the race.
The battle at the front began to heat up with seven laps to go as Marquez finally made his move and took the lead from Lorenzo moments after setting the fastest lap of the race with a time of 2mins 01.980secs.
Yet the Yamaha rider did not give up and reclaimed the lead as Marquez ran wide, to the delight of the crowds in the grandstand who roared approval.
Lower down the field, Redding moved up to 11th after taking Ducati's Yonny Hernandez and fellow Briton Cal Crutchlow moved up to 13th.
With three laps remaining, Lorenzo was being pushed hard and - after a fight for track position where the riders looked to have touched - Marquez came out on top and held the lead to clinch his 11th win of the season, 0.732secs ahead of Lorenzo.
Behind the top three were Pedrosa, Dovizioso, Pol Espargaro on his Yamaha, Stefan Bradl (Honda), Andrea Iannone (Ducati) and Aleix Espargaro (Yamaha).
Redding rounded out the top 10 in his home race, while Crutchlow claimed 12th.
Marquez now leads the riders' standings with 288 points, 89 more than nearest rival Pedrosa with Rossi 10 further back with six races of the season to go.
The race winner was delighted with his victory and admitted the victory here at Silverstone was sweet revenge after he came home second to Lorenzo in last year's race, where he was just 0.081secs off the pace.
He told BT Sport 2: "Jorge was much as strong as what I expected before the race because I did the same time in the practice but it looked like today that he was stronger and it was a great battle in the end.
"When I got past him for the first time I expected to open up a small gap but I made a small mistake and then he came by....but the battle was nice and to win the race - I was remembering and thinking about last year and this time I was a bit better and I beat him."
Following his second-placed finish, Lorenzo admitted the better bike won, but was pleased with the improved Yamaha after running so close to victory.
Lorenzo said: "It was clear Marc was the most powerful rider for this race but - as I said yesterday - racing's racing and sometimes you get a surprise like today.
"I made a very good start, the first corner I took first position and I pushed to the maximum and arrived better than ever. But it was not enough as, at this moment the Honda is very good even if our bike has improved.
"But we weren't so far from Marc. Obviously this action from the touch with each other cost me half a second, anyway I was so tired to push to the limit and the rear tyre was destroyed."