Reigning champion Marc Marquez stretched his lead in the MotoGP standings to 14 points with victory in Brno.
Repsol Honda rider Marquez started the day five points ahead of Movistar Yamaha's Maverick Vinales, who made a dash for third after being hindered by a late pit stop.
Dani Pedrosa came in second to complete an all-Spanish top three.
The race had started in wet conditions but Marquez took an early gamble, first among the field to switch to slick tyres, and it paid handsome rewards.
Marquez has now won his last two races after victory in Germany and will be looking to complete a hat-trick when battle reconvenes in Austria.