Vinales finished narrowly ahead of Ducati's Andrea Dovizioso in second, while fellow Yamaha rider Valentino Rossi completed the podium by finishing in third.
The young Spanish rider started the race on pole position, but struggled to adjust to the wet track conditions - and slipped as far back as fifth in the opening laps.
It was a dream start for Johann Zarco in his first MotoGP race, as the French rookie shot up three spots on the opening lap to take the lead and surge away from the field.
However, the dream quickly turned into disappointment for the Monster Yamaha rider - as he slipped off his bike on Lap 6 and handed the race lead to Andrea Dovizioso, who looked comfortable on his Ducati.
A pack started to emerge at the front of the field, as Dovizioso was closely followed by Honda's Marc Marquez and the Suzuki of Andrea Iannone - while the Yamaha duo began their push through the field as the track started to dry.
On lap 10, Iannone crashed out - which allowed Vinales to move into a podium position, and within a lap he had moved past Marc Marquez to rise into second position.
Valentino Rossi was quick to follow his Yamaha team-mate in passing Marquez - as the pair set their sights on the pace-setting Ducati of Dovizioso.
Lap 13 was when Vinales made his first major move - and momentarily snagged the race lead from Dovizioso, but could not match the straight line speed of the Ducati, who quickly reclaimed control of the race.
The two riders went back and forth, trading places at the front of the field - but Vinales would not be denied, as he made his final move past his Italian rival on the penultimate lap and crossing the chequered flag half a second ahead of Dovizioso.
Valentino Rossi finished almost two seconds behind the pace to finish in third, while the Honda duo of Marc Marquez and Dani Pedrosa finished in fourth and fifth respectively.
Aprilia had a lot to celebrate, as Aleix Espargaro was the fastest of the satellite bikes, finishing in sixth, narrowly ahead of Scott Redding (Octo Pramac) and Australian rider Jack Miller (Marc VDS Honda).
The top ten was rounded out by Alex Rins (Suzuki) and Jonas Folger (Monster Yamaha), while Jorge Lorenzo had a race to forget - finishing in 11th.
Back