Leclerc hit the front in the early running when the majority of runners concentrated on using the medium-compound Pirellis, with Red Bull driver Max Verstappen only 0.017s slower.
Vettel was the first of the frontrunners to set a time on his performance run on softs, moving to the front with a time of 1m44.753s.
Leclerc then responded by setting a time 0.630s quicker than Vettel to reclaim top spot, with Vettel’s attempt to hit back with a second push lap resulting in a slow first sector and no chance of improving.
As expected, Mercedes set the pace in the twistier middle sector of the Spa Francorchamps circuit, but lost out to Ferrari in the power-dependent first and third sector despite running new and upgraded engines.
This left Bottas 0.846s off Leclerc’s pace, with his advantage over Hamilton established thanks to the reigning world champion not matching his earlier pace in the final sector.
Racing Point driver Sergio Perez was a surprise fifth, with the car performing strongly in the first and third sectors and ending up as the last runner within a second of the pace.
Perez’s session came to a firey end with five minutes remaining when he pulled off the track with an engine-related problem with his new and upgraded Mercedes.
Perez’s failure led to the virtual safety car being activated, with the session subsequently being red flagged never to resume.
Verstappen attempted two push laps on his softs but could not improve on the first, which was compromised by poor first and final sectors and included a lockup into the final chicane.
Red Bull newcomer Alex Albon was 10th fastest, with his fastest lap compromised by a lock-up into La Source – leaving him just under four tenths off Verstappen.
McLaren driver Carlos Sainz was 11th ahead of Romain Grosjean, who was briefly as high as sixth thanks to completing his quick lap early on.
He made a second attempt, but ran wide at the left-hander before Pouhon and aborted his lap.
Outgoing Renault driver Nico Hulkenberg was 13th ahead of Toro Rosso driver Daniil Kvyat, with Lando Norris 15th – the trio separated by just 0.049s.
Alfa Romeo driver Antonio Giovinazzi was 10th fastest on medium rubber but slipped down to 16th on softs.
Pierre Gasly was 17th on his Toro Rosso return, lapping 0.160s off Kvyat and at one stage complaining that he was hearing communications from outside the team over the radio.
Haas driver Kevin Magnussen was 18th having abandoned his first attempt on softs and having to go again, ending up 2.276s off the pace.
George Russell won the intra-Williams battle at the back, lapping 0.444s quicker than Robert Kubica.