Valentino Rossi claimed his first win since 2010 with victory at the Netherlands Grand Prix as Jorge Lorenzo took fifth despite a broken collarbone.
Seven-time MotoGP champion Rossi, 34, dominated from the front after taking the lead on lap six.
Marc Marquez was second and Britain's Cal Crutchlow was third after starting from pole for the first time.
There was disappointment for championship leader Dani Pedrosa, however, as he could only place fourth.
The Repsol Honda man had been expected to take full advantage of Lorenzo's injury, with the world champion only passed fit to race on Saturday morning having had surgery on Friday following a 120mph practice crash.
And Pedrosa seemed to be on course for a third win of the season as he controlled the pace in the opening laps, only for Rossi to begin reeling him in.
The Assen stands erupted when the Italian finally came through, as he chased down his first MotoGP triumph since the Malaysian Grand Prix two and a half years ago.
"I'm very happy and I can't believe the victory after a lot of time," Rossi said. "I worked very hard and never gave up.
"We made a big step forward with the race and I rode better."
Pedrosa dropped back further as he struggled with the front end of his bike. He was first overtaken by compatriot Marquez - who himself was riding with a broken toe and finger - with nine laps to go, before Crutchlow burned past him.
With Rossi well clear, the excitement in the final stages came as the Briton tried to find a way past the Spanish rookie, with the battle only ending on the penultimate lap when Crutchlow lightly clipped the Spaniard's rear wheel and had to drop back.
Despite a third podium of the campaign for Crutchlow, the 27-year-old bemoaned another poor opening period, having become the first British MotoGP rider in more than a decade to achieve pole position.
"It was too little, too late again," Crutchlow said. "We cannot ride for the first 10 laps, then come strong at the end.
"I am pleased for Valentino Rossi - I wish it was me but my time will come."
Lorenzo, who was doubled over with pain as he struggled off his bike in the pit lane after a gritty fifth place, restricted title rival Pedrosa to a nine-point lead at the top of the standings.
In Moto2 Spaniard Pol Espargaro triumphed to reduce British rider Scott Redding's advantage to 30 points. Switzerland's Dominique Aegerter took the final spot on the podium after leading earlier in the race.
In Moto3, Luis Salom increased his championship lead to 10 points with victory after Maverick Vinales lost the lead by running wide in the final moments of the race.
Netherlands MotoGP results:
1. Valentino Rossi (Italy) Yamaha 41:25.202
2. Marc Marquez (Spain) Honda 41:27.372
3. Cal Crutchlow (Britain) Yamaha 41:29.275
4. Dani Pedrosa (Spain) Honda 41:33.034
5. Jorge Lorenzo (Spain) Yamaha 41:40.712
6. Stefan Bradl (Germany) Honda 41:52.721
7. Alvaro Bautista (Spain) Honda 41:56.800
8. Aleix Espargaro (Spain) Aprilia 41:57.607
9. Bradley Smith (Britain) Yamaha 41:58.953
10. Andrea Dovizioso (Italy) Ducati 41:59.003