Marc Marquez moved closer to winning the championship in his rookie season by clinching the Aragon Grand Prix.
The Spaniard, 20, started on pole but soon lost the lead to compatriot and title rival Jorge Lorenzo.
But Marquez again showed his pace to reclaim the front - leaving Lorenzo to settle for second - and stretch his championship lead to 39 points.
Six-time champion Valentino Rossi was third and Briton Cal Crutchlow sixth, but Dani Pedrosa crashed out.
The slightest of contact between Pedrosa and his team-mate Marquez with 18 laps to go damaged the former's traction control on his Honda, causing it to flip over. Race direction later confirmed the crash is under investigation.
"I'm sorry for that - it's something very unusual to see," said Marquez. "The important thing is that Dani is OK.
The crash dealt a significant blow to Pedrosa's title hopes. Marquez is on 278 championship points to Lorenzo's 239, while Pedrosa is third but now 59 points off the top of the standings with four races left.
Alvaro Bautista finished fourth after being edged out by Rossi late on while Stefan Bradl took fifth.
Lorenzo went into Sunday's race knowing wins were needed to maintain a title challenge in the remaining grands prix.
He started well, stealing first place from Marquez before opening up a bike-length gap from the rest of the pack - and it looked as if the tussle between Marquez and Pedrosa behind him could work in his favour.
A brave, sweeping manoeuvre saw Pedrosa pass his team-mate into second early on and that appeared to set things up for a thrilling battle on the circuit and in the title race.
However, with 18 laps to go, Pedrosa high-sided his bike when coming out of a corner, sending him tumbling across the track.
With Pedrosa out of contention, Marquez could focus on Lorenzo and he chipped away at his advantage before moving back in front with 10 laps to go - and he stayed there.
That left the battle for third as the most intriguing, with Bradl and Rossi exchanging places before the latter eventually got the better of the German to claim his fifth podium of the season.
In the Moto2 race, Nicolas Terol led a Spanish one-two-three for his second win of the season.
Esteve Rabat finished second with Pol Espargaro third while championship leader Scott Redding finished fourth.
It was enough for the Briton to maintain his lead but Espargaro cut his advantage to 20 points.
Finally, Spain's Alex Rins won the Moto3 race ahead of compatriots Maverick Vinales and Alex Marquez.
Aragon Grand Prix result:
1. Marc Marquez (Spa) Repsol Honda 42:03.459
2. Jorge Lorenzo (Spa) Yamaha Factory Racing 42:04.815
3. Valentino Rossi (Ita) Yamaha Factory Racing 42:16.386
4. Alvaro Bautista (Spa) Honda Gresini 42:17.246
5. Stefan Bradl (Ger) LCR Honda MotoGP 42:17.432
6. Cal Crutchlow (GB) Monster Yamaha Tech 3 42:18.121
7. Bradley Smith (GB) Monster Yamaha Tech 3 42:34.679
8. Andrea Dovizioso (Ita) Ducati Team 42:44.130
9. Nicky Hayden (US) Ducati Team 42:56.872
10. Andrea Iannone (Ita) Pramac Racing Team 42:58.526
11. Aleix Espargaro (Spa) Power Electronics Aspar 43:01.460
12. Yonny Hernandez (Colombia) Aprilia 43:08.972
13. Randy de Puniet (France) Aprilia 43:10.048
14. Hiroshi Aoyama (Japan) FTR 43:12.133
15. Claudio Corti (Italy) FTR 43:12.589