Marc Marquez's MotoGP winning streak ended at Brno as Dani Pedrosa took victory ahead of Jorge Lorenzo and Valentino Rossi.
Honda's Marquez immediately lost his pole advantage at the start, beaten away by the Ducatis of front row partners Andrea Iannone and Andrea Dovizioso.
The championship leader then fell right back to sixth during a busy first lap, losing ground when the determined Jorge Lorenzo attacked both works Hondas and moved his Yamaha up to third.
Eager to make an early break, Lorenzo overtook the two leading Ducatis in a single move on lap two and then quickly pulled a one-second lead over the pack.
But despite Lorenzo's early pace, Pedrosa would prove to be the man to beat.
Although he made slightly slower progress past the Ducatis, once into second he swiftly destroyed Lorenzo's lead and then overtook him on lap five of 22.
Lorenzo never let Pedrosa get more than 1.8s ahead, and closed his lead down to under a second on the final lap, but the Honda rider had the race under control and took his first win since the 2013 Malaysian Grand Prix in October last year.
Marquez had a spectacular battle with Iannone - in which they exchanged places four times in half a lap and hit each other twice in the process on his way back through to third, which is where his charge stalled.
Rossi came back at him, overtaking the Honda at half-distance and then pulling away, leaving Marquez to trail home a muted fourth.
It was the first time Marquez had ever finished a MotoGP race off the podium, with last year's crash at Mugello and disqualification at Phillip Island the only other times he has missed a rostrum spot.
Iannone and Dovizioso continued to battle frantically for top Ducati honours all race, with the Pramac man finally beating the works rider over the line to take fifth by 0.195s.
Stefan Bradl, the battling Aleix Espargaro and Bradley Smith, and Alvaro Bautista completed the top 10.
Pol Espargaro and Cal Crutchlow both crashed out.
Scott Redding defeated the third works Ducati of Michele Pirro in a fight for 11th, with fellow Briton Leon Camier getting a point for 15th, narrowly losing out in a long fight with home favourite Karel Abraham.
Results - 22 laps Pos Rider Team/Bike Time/Gap 1. Dani Pedrosa Honda 42m47.800s 2. Jorge Lorenzo Yamaha +0.410s 3. Valentino Rossi Yamaha +5.259s 4. Marc Marquez Honda +10.454s 5. Andrea Iannone Pramac Ducati +17.639s 6. Andrea Dovizioso Ducati +17.834s 7. Stefan Bradl LCR Honda +23.819s 8. Aleix Espargaro Forward Yamaha +29.621s 9. Bradley Smith Tech 3 Yamaha +30.364s 10. Alvaro Bautista Gresini Honda +37.639s 11. Scott Redding Gresini Honda +55.604s 12. Michele Pirro Ducati +56.727s 13. Hiroshi Aoyama Aspar Honda +56.908s 14. Karel Abraham Cardion Honda +1m04.135s 15. Leon Camier Aspar Honda +1m04.902s 16. Alex de Angelis Forward Yamaha +1m20.666s 17. Hector Barbera Avintia FTR-Kawasaki +1m24.282s 18. Mike di Meglio Avintia FTR-Kawasaki +1m27.436s 19. Broc Parkes PBM-Aprilia +1m37.867s Retirements: Danilo Petrucci Ioda Aprilia 20 laps Cal Crutchlow Ducati 7 laps Pol Espargaro Tech 3 Yamaha 6 laps Michael Laverty PBM-Aprilia 6 laps Yonny Hernandez Pramac Ducati 5 laps