Spain's Jorge Lorenzo won the British Grand Prix on a Yamaha to stretch his lead over Casey Stoner to 25 points in the MotoGP world championship.
Australian Stoner, the reigning world champion who had started on the front row, had to settle for second with Spanish Honda team mate Dani Pedrosa following a close third in his slipstream.
"I was fifth or sixth (after the start) and I didn't want to make mistakes so I had to wait a little bit," said the Spaniard, who ended the race doing a lap of honour with the Spanish flag fluttering from his shoulder.
"This victory is fantastic, the season we are doing is just perfect, we can't ask for more."
Lorenzo has 140 points to Stoner's 115 and Pedrosa's 101.
British rider Cal Crutchlow, ignoring hospital advice to race with a broken ankle from the back of the grid after missing Saturday's qualifying, took an extraordinary sixth place for Tech3 Yamaha through gritted teeth.
Spaniard Alvaro Bautista was on pole position for the first time in his MotoGP career on the Gresini Honda but finished fourth after losing out at the start to American Ben Spies, Lorenzo's team mate.
Stoner then took charge of a race that had the home crowd as gripped by what was going on at the back of the field as at the front.
With 14 laps to go, Crutchlow had passed Italian Valentino Rossi's Ducati for 10th place while Lorenzo moved up to third and then passed Spies for second before putting pressure on Stoner.
After duelling at close quarters with the Australian, Lorenzo made a move stick with nine laps remaining and pulled away.
Stoner said he had realised the game was up from lap one when he saw how much more grip Spies had on the Yamaha.
"Even when I went around to the grid the bike didn't feel right so we made another change before the race and it was just horrible....we just struggled the whole race," he added.
"I knew if they got past it was going to be one hell of a try to keep up and we just couldn't," he said.
Pedrosa said he too had felt uneasy on the bike.
"I felt like today I was not going to have a good Sunday," he told the BBC.
Crutchlow's was perhaps the ride of the afternoon, lapping as fast as the leader and moving up to fourth in the overall standings after Italian team mate Andrea Dovizioso failed to score.
The Coventry-born rider passed Ducati's American Nicky Hayden for sixth on the final lap and revealed afterwards how much he had to battle just to get on the back of the grid.
"It's been a tough weekend. Missing two hours of track time to these guys is a disaster so I'm pleased. I'm just emotionally drained," he said.
"They told me I wasn't allowed to ride, at the hospital. So I left the hospital, lied a little bit when we got to the circuit and the medical staff did great here."