Former 125cc World Championship leader Terol, who missed the previous Sachsenring round due to back injuries sustained in Catalunya, made a spectacular return to race action by storming to a 20.351sec victory at Brno on Sunday.
The Spaniard and his Aspar team got their tyre choice and set-up spot-on in a race which was delayed by rain on the grid. Most seemed to run wetter tyres and with the rain soon halting Terol exploited his harder rubber to build a lead of over 20 seconds after just eleven of the 19 laps.
The Aspar Aprilia rider then managed his advantage to confirm his second victory of the season, and first since round one in Qatar.
The fight for second was much closer, with Pol Espargaro, Esteve Rabat and Efren Vasquez all battling for the final rostrum places - until an overenthusiastic move by Vasquez, soon after contact with Rabat, sent him sliding off the track and put his Tuenti Derbi on top of a tyre wall, with just over one lap to go.
That left his team-mate Espargaro to take second and Blusens Aprilia rider Rabat third.
Title leader Marc Marquez, who dislocated his shoulder on Friday, came under late pressure for seventh from pole sitter Bradley Smith, who passed the Red Bull Ajo Derbi rider on the penultimate lap.
Marquez, who had won the previous five races, now holds a reduced 15 point lead over Espargaro, with Terol 23 points from the lead.
Race results - Brno:
1. Terol (Aprilia) 19 laps
2. Espargaro (Derbi) +20.351s
3. Rabat (Aprilia) +20.555s
4. Folger (Aprilia) +20.529s
5. Kornfeil (Aprilia) +29.914s
6. Smith (Aprilia) +29.986s
7. Marquez (Derbi) +31.405s
8. Iwema (Aprilia) +32.973s
9. Koyama (Aprilia) +41.842s
10. Salom (Aprilia) +46.128s
DNF Webb (Aprilia)