Italian Andrea Dovizioso was second for Ducati with compatriot Valentino Rossi, at 38 years of age, back on the podium in third place for Yamaha under the floodlights.
Honda's reigning world champion Marc Marquez finished fourth on an eventful evening that saw 22-year-old compatriot Vinales drop from pole to fifth on the opening lap before making a stirring comeback for his second career victory.
The season's only night race started 45 minutes late after earlier rain, with plenty of discussion among the riders who did two warm-up laps before Vinales took his position at the front of the grid.
The race distance was shortened to 20 laps.
Read the original article on Eurosport: Vinales wins delayed and shortened MotoGP opener