The Monegasque was 0.2 seconds behind his pursuer McLaren, Sainz returning to the same interval in third place.
But the two Scuderia cars edged out Max Verstappen, with the Dutch champion enduring a difficult afternoon as he was relatively late and complaining about the car’s wobble.
Leclerc led the way with his previous qualifying simulation, which could take on greater significance if qualifying does not go ahead amid forecasts of a downpour on Saturday.
Running a dry-weather setup in 34 degrees Celsius conditions, the Ferrari driver peaked with a 1m18.445s to sit two-tenths close to McLaren’s Norris.
According to FP1, it was Sebastian Vettel who ventured onto the track first ahead of Lance Stroll and Kevin Magnussen’s updated Haas, as Valtteri Bottas returned for Alfa Romeo after missing the previous session to make room for Robert Kubica.
Sainz was the first driver to post anything resembling a representative time as he took his medium-tyre F1-75 to a 1m20.487s after five minutes, but was quickly dismissed by Alonso.
Verstappen was then the first to dive into the 1m19s, the Dutch ace dropping the pace to 1m19.854s before Leclerc responded immediately with a flyer of 1m18s.
Leclerc, who is 63 points behind Verstappen after losing the lead in the French GP last weekend, climbed to the top thanks to a 1m18.911s to find seven-tenths on the RB18.
This would keep Leclerc in the lead for the first stints on medium tyres. And although he was the fastest in all three sectors, he left quite a bit on the table as he missed his ideal lap by 0.12 seconds.
Sergio Perez managed to pull in third, half a second behind his teammate as he edged out Fernando Alonso.
Sainz then moved up to second, cutting his time to 1m19.548s to find a tenth on Verstappen.
However, at this stage he would still be 0.6 seconds behind his stablemate, with the Spaniard not helping matters by being scruffy and running wide at turns 5 and 7.
All but three of the cars returned to the pits to create a lull in the session before the switch to soft tyres, which Leclerc again grabbed by the scruff of the neck.
Sainz improved a bit to 1m19.392s while Verstappen spent much of the session on the sidelines while Red Bull paid close attention to their car’s suspension setup.
With an RB18 on the way, Norris climbed to the top of the times on his soft-tire flyer.
He ran the MCL36 very far out of the final corner to kick up a cloud of dust as he cut the dry grass at the end of the rumble strip.
This would lead to waving a slippery surface flag for 2.5 minutes while other cars cleared the track.
Norris was then notably told twice to protect the floor of the car.
Despite the excursion, Norris set the tone with a 1m18.662s and would only be bettered by the benchmark Leclerc would set halfway through the session.
Leclerc moved to 1m18.445s to find 0.2s over the Briton and would remain the quickest as the usual switch to slower racing simulations dominated the final 20 minutes of play.
Sainz, who edged FP1 by 0.13 seconds over Verstappen, was third ahead of Red Bull – who became frustrated with the RB18 wobble in Turns 4 and 11 mainly.
With the MCL36 much better in low-speed cornering than its predecessors, the tight Hungaroring saw Daniel Ricciardo move up to fifth ahead of Alonso, who turned 41 on Friday.
Vettel, who is retiring, finished seventh ahead of George Russell, who led Mercedes’ attack despite continuing to struggle to lock the front right into Turn 1.
Perez, meanwhile, finished ninth ahead of Bottas and Lewis Hamilton, the seven-time champion 1.1 seconds off the pace.
Zhou Guanyu finished 12th ahead of Esteban Ocon and Lance Stroll, while the recently updated AlphaTauri AT03s and new Haas machines raced alongside the Williams cars at the bottom of the order.
Magnussen finished 16th ahead of Mick Schumacher, Nicholas Latifi, Yuki Tsunoda and Alex Albon.