The Monegasque sat pretty by 0.2s over his McLaren chaser, with Sainz the same interval again back in third place.
But both Scuderia cars ran ahead of Max Verstappen, the Dutch champion enduring a difficult afternoon as he was comparatively off the pace and complaining of car oscillations.
Leclerc led the way thanks to his earlier qualifying simulation, which might take on greater significance should qualifying not go ahead amid forecasts of a downpour on Saturday.
Running a dry-weather set-up in the 34-degree Celsius conditions, the Ferrari driver peaked with a 1m18.445s to sit pretty by two tenths over McLaren's Norris.
As per FP1, it had been Sebastian Vettel to venture out first on track ahead of Lance Stroll and the updated Haas of Kevin Magnussen, as Valtteri Bottas returned for Alfa Romeo after missing the earlier session to make room for Robert Kubica.
Sainz was the first driver to post something resembling a representative time as he took his medium-tyre shod F1-75 to a 1m20.487s after five minutes but was swiftly deposed by Alonso.
Verstappen was then the first to dip into the 1m19s, the Dutch ace dropping the pace to a 1m19.854s before Leclerc immediately responded with a 1m18s flier.
Leclerc, who sits 63 points adrift of Verstappen after crashing out of the lead of the French GP last weekend, climbed to the top courtesy of a 1m18.911s to find seventh tenths over the RB18.
That would keep Leclerc on top for the opening medium-tyre stints. And despite being fastest in all three sectors, he left a little on the table as he missed his ideal lap by 0.12s.
Sergio Perez managed to pull to third, half a second in arrears of his teammate as he pipped Fernando Alonso.
Sainz did then improve to second, whittling his time down to a 1m19.548s to find a tenth over Verstappen.
However, at this stage, he would still sit some 0.6s in arrears of his stablemate, the Spaniard not helping matters by being scruffy and running wide at Turns 5 and 7.
All bar three cars returned to the pits to create a lull in the session before the switch to soft tyres, which again Leclerc grabbed by the scruff of the neck.
Sainz would improve a little to a 1m19.392s while Verstappen spent a hefty part of the session on the sidelines while Red Bull paid particular attention to the suspension set-up on his car.
With one RB18 out the way, Norris bolted to the top of the times on his soft-tyre flier.
His ran the MCL36 very wide out of the final corner to kick up a cloud of dust as he clipped the dry grass at the end of the rumble strip.
This would lead to a slippery surface flag being waved for 2.5 minutes while other cars cleaned the track.
Norris was then notably told twice to protect the floor of the car.
Despite the excursion, Norris set the pace with a 1m18.662s and would only be bettered by the benchmark Leclerc would set at the halfway point of the session.
Leclerc bolted to a 1m18.445s to find 0.2s over the Briton and would remain fastest as the customary switch to slower race simulations dominated the final 20 minutes of play.
Sainz, who topped FP1 by 0.13s over Verstappen, classified third ahead of the Red Bull - who grew frustrated with the RB18 oscillation through Turns 4 and 11 chiefly.
With the MCL36 far better in low-speed corners than its predecessors, the tight Hungaroring enabled Daniel Ricciardo to return fifth ahead of Alonso, who turned 41 on Friday.
The retiring Vettel ran to seventh ahead of George Russell, who led the Mercedes attack despite his persistent struggles with locking the front-right into Turn 1.
Perez, meanwhile, ran to ninth ahead of Bottas and Lewis Hamilton, the seven-time champion 1.1s off the pace.
Zhou Guanyu clocked 12th over Esteban Ocon and Lance Stroll, while the recently updated AlphaTauri AT03s and the new-look Haas machines ran in the company of the Williams cars at the bottom of the order.
Magnussen clocked 16th over Mick Schumacher, Nicholas Latifi, Yuki Tsunoda and Alex Albon.
Cla | Driver | Chassis | Engine | Laps | Time | Gap | |
---|---|---|---|---|---|---|---|
1 | Charles Leclerc | Ferrari | Ferrari | 27 | 1'18.445 | ||
2 | Lando Norris | McLaren | Mercedes | 29 | 1'18.662 | 0.217 | |
3 | Carlos Sainz | Ferrari | Ferrari | 29 | 1'18.676 | 0.231 | |
4 | Max Verstappen | Red Bull | Red Bull | 26 | 1'18.728 | 0.283 | |
5 | Daniel Ricciardo | McLaren | Mercedes | 27 | 1'18.872 | 0.427 | |
6 | Fernando Alonso | Alpine | Renault | 30 | 1'19.049 | 0.604 | |
7 | Sebastian Vettel | Aston Martin | Mercedes | 31 | 1'19.253 | 0.808 | |
8 | George Russell | Mercedes | Mercedes | 28 | 1'19.355 | 0.910 | |
9 | Sergio Perez | Red Bull | Red Bull | 28 | 1'19.397 | 0.952 | |
10 | Valtteri Bottas | Alfa Romeo | Ferrari | 30 | 1'19.411 | 0.966 | |
11 | Lewis Hamilton | Mercedes | Mercedes | 23 | 1'19.547 | 1.102 | |
12 | Zhou Guanyu | Alfa Romeo | Ferrari | 26 | 1'19.605 | 1.160 | |
13 | Esteban Ocon | Alpine | Renault | 27 | 1'19.614 | 1.169 | |
14 | Lance Stroll | Aston Martin | Mercedes | 30 | 1'19.702 | 1.257 | |
15 | Pierre Gasly | AlphaTauri | Red Bull | 28 | 1'19.730 | 1.285 | |
16 | Kevin Magnussen | Haas | Ferrari | 29 | 1'19.818 | 1.373 | |
17 | Mick Schumacher | Haas | Ferrari | 28 | 1'19.985 | 1.540 | |
18 | Nicholas Latifi | Williams | Mercedes | 30 | 1'20.488 | 2.043 | |
19 | Yuki Tsunoda | AlphaTauri | Red Bull | 31 | 1'20.521 | 2.076 | |
20 | Alex Albon | Williams | Mercedes | 20 | 1'20.615 | 2.170 | |
View full results |