Bahrain poleman Leclerc had control of the 60-minute session throughout and enjoyed a comfortable advantage after the first runs.
Bottas moved to the top of the times on his first flying lap on a second set of new soft tyres, eclipsing Leclerc’s time by half a tenth.
However, Leclerc improved twice on his second run and ended on a 1m03.987s – with his second lap, a 1m04.120s, also good enough for top spot.
Hamilton lapped 0.010s slower than Leclerc initially but ended the session 0.143s behind after failing to improve again.
He was a tenth clear of Bottas, with the second Ferrari of Vettel 0.263s slower than his teammate in fourth.
Verstappen slipped to fifth in the lead Red Bull although did not hook up his best sectors.
He was 0.459s slower than Leclerc after failing to improve in the final part of the lap on his first new-tyre run, and then aborting a quicker lap shortly after – complaining that “the changes we made are not good”.
Verstappen’s Red Bull teammate Pierre Gasly had a troubled start to the session when he reported “really low power” and spent the opening phase of FP3 in the pits.
However, he emerged with enough time to completely two runs as normal, but ended up only seventh and 1.2s off the pace.
That gap allowed Lando Norris to split the Red Bulls in his McLaren, which was just within a second of Leclerc’s best – 0.999s off the pace.
Haas endured a difficult session, with its cars 15th (Romain Grosjean) and 18th (Kevin Magnussen). The team also needs to change the gearbox on Magnussen’s car before qualifying, which will hand the Dane a five-place grid penalty.