Honda's Dani Pedrosa became the eighth different MotoGP winner in eight races to deny Italian great Valentino Rossi a home victory in front of 100,000 flag-waving fans at the San Marino Grand Prix.
37 year old Rossi finished second ahead of Yamaha team mate and reigning champion Jorge Lorenzo at the Misano circuit in eastern Italy.
Honda's championship leader Marc Marquez was fourth with his overall championship lead cut to 43 points with five races remaining. Spaniard Marquez has 223 points to Rossi's 180 and Lorenzo's 162.
It was the first time since the motorcycling world championship began in 1949 that eight different riders had won eight successive races in the same season in the top category.
"The feeling was good, except yesterday in qualifying," said Pedrosa, who had started in the middle of the third row of the grid and was one of just two riders to opt for the softest front tyre compound.
"Today I focused on the rhythm, I knew this was the key. And then I just tried to do my race. Fortunately my pace was very consistent," added the Spaniard.
Rossi had led from the start, when he got ahead of pole-sitter Lorenzo, but could not fend off Pedrosa once the Honda rider had passed Marquez and Lorenzo by lowering the race lap record.
Pedrosa took the lead seven laps from the end and stayed ahead, finishing 2.837 seconds clear of Rossi for his first win since Malaysia last October.
"Pedrosa was too fast. I tried the maximum but no way, he had the better pace," said Rossi, speaking as a wave of his yellow-shirted fans invaded the track after the finish.
"Anyway, it's a second place. It's a shame here in Misano because it was a special race I wanted to try to win but today was impossible."
Lorenzo said he had expected to fight for victory but the others were faster than him and he congratulated his compatriot.
The winners of the previous seven races were Spaniard Maverick Vinales, Britain's Cal Crutchlow, Italian Andrea Iannone, Marquez, Australian Jack Miller, Rossi and Lorenzo.