The 24-year-old Briton, who had bossed Friday's two practice sessions, demonstrated his pace and potential with a fastest lap in one minute and 16.098 seconds to outpace his team-mate by 0.044 seconds in a convincing one-two for the McLaren team.
Three-time world champion and series leader Max Verstappen, who leads Norris by 84 points in the drivers’ title race, was third for Red Bull ahead of George Russell of Mercedes, Carlos Sainz of Ferrari and RB’s Daniel Ricciardo.
In a session of some surprises, Williams’ Alex Albon was seventh ahead of Nico Hulkenberg of Haas and Yuki Tsunoda of RB with seven-time champion Lewis Hamilton, who is seeking a record-increasing ninth Hungarian victory, tenth in the second Mercedes.
Charles Leclerc was 11th for Ferrari and Sergio Perez 13th in the second Red Bull.
On a significantly cooler day, with an ambient temperature of only 27 degrees Celsius, the session began in desultory fashion with few drivers making an early start and, after five minutes only one time on the board, from Perez.
Verstappen joined him and began a series of ever-faster laps to go top and trim his best time down to 1:17.938 when, with 15 minutes gone, he was the only man on track. It was hardly boisterous entertainment for a big crowd around the Hungaroring.
Others began to join the fray with Lance Stroll of Aston Martin and Sauber's Valtteri Bottas clocking times before Alex Albon went top for Williams, only to be rapidly replaced by Norris and Russell.
The Briton’s lap in 1:16.826 suggested Mercedes were happier in the cooler conditions than those of a sweltering Friday. Hamilton, who had seemed ill at ease as he slithered in pursuit, then went second, within two-tenths of his team-mate.
The Silver Arrows' joy was short-lived, however, as McLaren then came and showed their potential, Norris clocked a lap in 1:16.098 followed by Piastri, just four-hundredths of a second adrift, ahead of Verstappen.
As the times tumbled in the closing minutes, Leclerc’s troubles continued as he managed only 10th while Sainz was fifth ahead of surprise packages Ricciardo of RB, Albon and Haas’s Hulkenberg with Hamilton also battling to stay competitive.
The 39-year-old Briton spun at Turn Nine with five minutes remaining.
Perez, fighting for form and his future with Red Bull, also struggled and was down in 13th, eight-tenths off the pace.