Honda rider Dani Pedrosa won the Czech MotoGP to deny team-mate Marc Marquez a record 11th victory in a row.
Reigning champion Marquez had won all the previous races this season but failed to make the podium in Brno and finished a disappointing fourth.
Yamaha's Jorge Lorenzo was second 0.4 seconds behind Pedrosa and team-mate Valentino Rossi came third.
Marquez, 21, saw his championship lead over fellow Spaniard Pedrosa reduced to 77 points with seven races remaining.
He said: "I tried to do my best but today it was not possible.
"I thought I had the pace, but who knows if the bike was not ready or the rider was not ready."
Marquez was a strong favourite to beat Mick Doohan's 1997 record of 10 consecutive wins that he equalled with victory at Indianapolis on 10 August.
But a sluggish start from pole saw him slip to sixth place on the opening lap as Lorenzo took advantage with the early lead.
Pedrosa trailed Lorenzo's Yamaha before overtaking him with 17 laps remaining.
Marquez never looked likely to challenge for the win as he struggled with the pace but fought back to third before being passed by nine-time champion Rossi near the end.
Pedrosa's victory was the 26th MotoGP win of his career to match his bike number.
He said: "Overall I had a good experience at this track. It's a little difficult when Marc is winning all the time so I'm very happy."
Britain's Cal Crutchlow retired with 14 laps to go on his Ducati, who he is leaving to join Honda for 2015.
Spanish rider Esteve Rabat took his fifth Moto2 victory of the season to stretch his overall lead while Alexis Masbou of France won the Moto3 category for his maiden victory.
The next MotoGP race is at Silverstone on 31 August.
1. Dani Pedrosa SPA Honda 42'47.800
2. Jorge Lorenzo SPA Yamaha +0.410
3. Valentino Rossi ITA Yamaha +5.259
4. Marc Marquez SPA Honda +10.454
5. Andrea Iannone ITA Ducati +17.639
6. Andrea Dovizioso ITA Ducati +17.834
7. Stefan Bradl GER Honda +23.819
8. Aleix Espargaro SPA Yamaha +29.621
9. Bradley Smith GBR Yamaha +30.364
10. Alvaro Bautista SPA Honda +37.639
World Championship standings
1. Marc Marquez (Spain) Honda 263 pts
2. Dani Pedrosa (Spain) Honda 186
3. Valentino Rossi (Italy) Yamaha 173
4. Jorge Lorenzo (Spain) Yamaha 137
5. Andrea Dovizioso (Italy) Ducati 118