Moto3 championship leader Jorge Martin led a Gresini one-two in final practice despite a late fall for long-time pacesetter Fabio Di Giannantonio.
Di Giannantonio went on a run of successive fastest laps in the opening stages of FP3, the Italian beginning with a 1:48.258s, before improving to a 1:47.618s, which he followed with a 1:47.559s, while Ayumu Sasaki and Enea Bastianini slotted in behind him.
Teammate Martin deposed him just seconds after setting the benchmark by just 0.018 seconds, though Di Giannantonio retook top spot with a 1:47.305s with 25 minutes remaining.
The Gresini rider remained unchallenged until the final 12 minutes, when Bastianini guided his Leopard Honda to a 1:46.957s.
Di Giannantonio retaliiated moments later with a 1:46.348s, putting him six tenths clear of the rest. However, Martin dug deep to produce a 1:46.256s, which stood through to the chequered flag.
Martin's stablemate Di Giannantonio was unable to improve on second after suffering a small crash at the Lorenzo corner two minutes from the end. Last year's Jerez race winner Aron Canet completed the top three.
Friday pacesetter Niccolo Antonelli leaped up to fourth in the closing stages, with CIP's John McPhee finding pace at the end to go fifth fastest ahead of RBA Racing's Gabriel Rodrigo.
Early leader Bastianini found himself shuffled back to seventh in the end, with Jakub Kornfeil shadowing him in eighth.
Bastianini's Leopard teammate Lorenzo Dalla Porta ended the morning ninth, while rookie Makar Yurchenko rounded ou the top 10 on the second of the CIP KTMs.
Red Bull KTM Ajo's Darryn Binder was the only other faller in the session, the South African coming off at the fast Aspar corner in the final 10 minutes. He was unscathed and ended FP3 down in 27th.