This win helped "The Doctor" to move into third in the world championship race, behind new leader Andrea Dovizioso - after Maverick Vinales crashed out of the race.
The 38-year-old Rossi finished with a time of 41:41.149, averaging 169.9 kph, reports Efe.
By then Rossi had taken both reigning champion Marc Marquez and the early leader Johann Zarco to power himself back in contention to regain the crown as he dictated terms from the front - though amid anxieties as spots of rain fell in the closing stages he had to fend off Petrucci who had briefly nosed ahead.
"I hope to be competitive in Assen because I would like to make it a good race", said Rossi.
Jack Miller navigated a hard race to take another impressive result at the TT Circuit Assen where he won in 2016, crossing the line sixth after staying at the sharp end throughout.
The white flag came out with just eight laps left as rain began to affect the area around the track. "I was pushing myself over the limit, trying to bring the Yamaha to the top and I think that if I hadn't crashed I could have reached the riders in front".More news: US 800m runner competes with five months pregnancy
This is published unedited from the IANS feed.
Italians Rossi and Petrucci fought out a duel of their own over the final laps, with the latter holding the lead until three laps to go when Rossi passed at the chicane.
Zarco attempted to retaliate, but in doing so his front wheel made contact with Rossi's rear, the rookie slipping back behind Marquez as a result. Jack Miller (Estrella Galicia 0,0 Marc VDS) finished the race in sixth place ahead of Karel Abraham (Pull&Bear Aspar Team).
Those not making it through now decide the rest of the grid, with 2016 Assen victor Jack Miller (EG 0,0 Marc VDS), Loris Baz (Reale Avintia Racing) and Aleix Espargaro (Aprilia Racing Team Gresini) locking out the fastest fifteen.
Mir was ahead at the art of the final lap, but the drama was far from over, as he lost out midway through and the pack streamed past, with the final few corners just on the right side of chaos. Norrodin crashed out just ahead of the final chicane, before Canet moved through into the lead and held it over the line for his second win of the year - nearly side by side with second place finisher Fenat in another incredible Moto3 crescendo. The Yamaha rider had fought his way up to fifth from 11th on the grid by lap 12, only to crash out at the final chicane.
Championship continues next weekend in Germany, at the track in Dresden.