Vinales wins Portugal MotoGP sprint ahead of Marquez and Martin
The revived Marc Marquez took second after barging past Jorge Martin, on a Pramac Ducati, on the last lap.
The double reigning champion Francesco Bagnaia on a factory Ducati, who led until he ran wide on turn one with four laps to go, was a distant fourth.
Australian Jack Miller, who shot away at the start but did not have the pace on his KTM to hold off his pursuers, was fifth.
Vinales, who joined Aprilia in 2021 after being booted off the Yamaha team gained his best result for the Italian team despite suffering stomach problems during the week.
"Today it feels good," he said. "Happy to be back on the top positions. We are showing we are finding the way. Very concentrated for tomorrow but very happy for today. My first win for Aprilia."
Marquez suffered a bad crash in practice and started from the third row of the grid on his Gresini Ducati.
When he had his chance on the last lap, he dived aggressively past Martin on the inside who did not risk cutting off his compatriot.
"Starting froom ninth position is super difficult," Marquez said. "I was super lucky on the first lap to have a good start. Then I came back on the last lap."
Marquez crossed the line 1.039sec behind Vinales and 0.83sec ahead of Martin on a Pramac Ducati.
The weekend's main race takes place at 1400GMT on Sunday.