Spanish rider Vinales, on a Yamaha, inherited the lead on the fourth lap when world champion and pole-sitter Marc Marquez crashed out on his Honda, his machine careering spectacularly into the gravel at turn two with sparks flying off the tarmac.
Valentino Rossi, racing in his 350th grand prix, took second place on the second factory Yamaha, 2.915sec behind.
Rossi hopeful of podium in 350th race
Britain's Cal Crutchlow, on a Honda, was third having been passed by Rossi six laps from home.
It was a third career victory in the elite class for the 22-year-old Vinales who switched to Yamaha from Suzuki for this season.
"Marquez started very strong and when he fell I said to myself that I needed to get as many points as possible," said Vinales who has a perfect 50 points after two races, 14 ahead of Rossi. "I feel really happy and confident. It's like we are in a dream. I have to say thanks to the team, they are doing a great job, so let's continue like that."
Vinales the winner in Qatar MotoGP
Rossi, 38, added a second place to his third position in Qatar but admitted that Vinales, 16 years his junior, is the man to beat.
"Unfortunately, Maverick was a bit faster, but this result is really important for me and the whole team," said the Italian. "I don't think the results would have been different if I'd passed Cal earlier in the race. Looking at the lap times, Maverick was a bit stronger and that's just the way it is today."
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ