With less than three minutes on the clock, Leclerc demoted Perez to second, but the Mexican responded in the dying seconds to go top with a 1m12.476s lap, 0.041s quicker than Leclerc.
Williams' Nicholas Latifi and Alpine's Fernando Alonso set the first laptimes in F1's third and final practice session on the sunny streets of the principality.
They were soon joined by McLaren driver Daniel Ricciardo, who sought to make the most of FP3 after missing all of Friday's FP2 due to slipping up at the swimming pool section on his first lap.
But all eyes were on pre-event favourite Leclerc, who joined the track after eight minutes on softs and took over an early lead from teammate Carlos Sainz with a 1m14.008s effort.
Red Bull's first laps were four tenths shy of its title rival's pace, Max Verstappen briefly taking third ahead of Perez, with Alonso an early fifth.
Leclerc's second effort was a lot quicker still, taking the benchmark down to a 1m13.647s. It started a cycle of Ferrari and Red Bull trading blows on Pirelli's softest compound as track evolution continued to bring the times down, with Perez and Leclerc even setting identical times.
By the 30-minute mark Leclerc had gone top again with a 1m12.885s, two tenths off his best time of FP2.
Meanwhile, McLaren's Lando Norris briefly reclaimed his best of the rest spot in fifth, which he had held all of Friday, only to lose it to AlphaTauri's Pierre Gasly before halfway.
Mercedes struggled for pace early on, George Russell and Lewis Hamilton down in seventh and 10th respectively as Hamilton appeared puzzled at the 1.2s gap he was facing.
Sainz went straight on at Ste Devote while trying to match Sainz around the Monegasque's home track, something which also happened to Aston Martin's Lance Stroll.
During a mid-session lull in the action with just over 20 minutes to go, Norris found a clear track to go third, soon to be bested again by Gasly, which suggested the top teams still had lap time to find in the final third.
They duly did, with Leclerc and Perez trading first position until Perez finally secured the session lead ahead of the chequered flag.
Sainz took third over three tenths behind Perez and half a tenth up on Verstappen, who had seen one of his push laps ruined by traffic.
Gasly continued to hold off Norris for fifth, with Hamilton finally finding some pace to go seventh, albeit still nine tenths off the leaders.
Kevin Magnussen was a strong eighth in the Haas, which still hasn't received a significant upgrade.
Russell and Alonso completed the top 10, following by Yuki Tsunoda, the second Haas of Mick Schumacher and Vettel.
Valtteri Bottas continued a difficult weekend for Alfa Romeo in 14th, barely ahead of Alex Albon in the first of the Williams cars.
Ricciardo could only manage 16th following his loss of track time, with Alpine's Esteban Ocon down in 17th after a difficult session.
Stroll was 18th for Aston Martin, while Zhou Guanyu and Latifi propped up the timesheets in 19th and 20th respectively.
Traffic continued to be an issue, with Vettel furious about a close call with Sainz.
There were also incidents between Verstappen and Zhou, Perez and Russell and between Sainz and Stroll, for which all drivers has been summoned by the stewards.
Vettel's teammate Stroll contacted the wall on exit of the swimming pool section after taking too much kerb, damaging his front wing in an otherwise clean session.
Cla | Driver | Chassis | Engine | Laps | Time | Gap | |
---|---|---|---|---|---|---|---|
1 | Sergio Perez | Red Bull | Red Bull | 27 | 1'12.476 | ||
2 | Charles Leclerc | Ferrari | Ferrari | 29 | 1'12.517 | 0.041 | |
3 | Carlos Sainz | Ferrari | Ferrari | 28 | 1'12.846 | 0.370 | |
4 | Max Verstappen | Red Bull | Red Bull | 29 | 1'12.881 | 0.405 | |
5 | Pierre Gasly | AlphaTauri | Red Bull | 22 | 1'13.210 | 0.734 | |
6 | Lando Norris | McLaren | Mercedes | 19 | 1'13.226 | 0.750 | |
7 | Lewis Hamilton | Mercedes | Mercedes | 26 | 1'13.375 | 0.899 | |
8 | Kevin Magnussen | Haas | Ferrari | 24 | 1'13.436 | 0.960 | |
9 | George Russell | Mercedes | Mercedes | 26 | 1'13.476 | 1.000 | |
10 | Fernando Alonso | Alpine | Renault | 23 | 1'13.585 | 1.109 | |
11 | Yuki Tsunoda | AlphaTauri | Red Bull | 25 | 1'13.645 | 1.169 | |
12 | Mick Schumacher | Haas | Ferrari | 26 | 1'13.827 | 1.351 | |
13 | Sebastian Vettel | Aston Martin | Mercedes | 28 | 1'13.838 | 1.362 | |
14 | Valtteri Bottas | Alfa Romeo | Ferrari | 25 | 1'13.849 | 1.373 | |
15 | Alex Albon | Williams | Mercedes | 22 | 1'13.882 | 1.406 | |
16 | Daniel Ricciardo | McLaren | Mercedes | 29 | 1'14.104 | 1.628 | |
17 | Esteban Ocon | Alpine | Renault | 22 | 1'14.260 | 1.784 | |
18 | Lance Stroll | Aston Martin | Mercedes | 20 | 1'14.639 | 2.163 | |
19 | Zhou Guanyu | Alfa Romeo | Ferrari | 25 | 1'14.861 | 2.385 | |
20 | Nicholas Latifi | Williams | Mercedes | 26 | 1'14.910 | 2.434 | |
View full results |