Vinales, who sits second in the overall standings ahead of Sunday’s fourth race of the campaign, clocked one minute, 23.450 seconds to finish 0.068sec ahead of Ducati-Pramac’s Jack Miller.
Yamaha-SRT’s championship leader Fabio Quartararo was also less than a second back in third.
Vinales praised the factory outfit after unimpressive free practice earlier in the day where he managed a top-three finish just once.
“I’m really happy because my objective was in the front row but suddenly I felt an incredible feeling with the bike from this morning we made a really big improvement so the team has done a really good job,” Spaniard Vinales said.
“We need to try to understand for tomorrow’s race which are going to be the best tyres but anyway the bike is working fantastic.
“It was a lot different from Brno (the Czech MotoGP last weekend), so I am very happy and enthusiastic as we know on one lap we are very fast.”
Andrea Dovizioso, who is fourth the overall standings, will start in fourth place in Spielberg.
Earlier on Saturday Ducati announced the three-time championship runner-up will leave the side at the end of the campaign.
“Honestly, the situation was quite complicated and we asked for some time to make time in order to make up our mind for the future,” Sporting Director Paolo Ciabatti told BT Sport.
“We met with this morning with Simone Battistella (Dovizioso’s manager) and we realised they were not the conditions to continue, I don’t want to go into the details,” he added.
Seven-time MotoGP champion Valentino Rossi will start from 12th, with Binder, who won last weekend’s Czech GP, in 17th.