In the closing moments of the session, the McLaren driver beat Hamilton by 1.261 seconds, only to have his fastest lap time removed and then reinstated.
Max Verstappen finished only fourth, as Hamilton’s Mercedes led Fernando Alonso’s Aston Martin by 0.714 seconds.
Before barely making it in at the finish, the Red Bull driver made mistakes on two laps.
How to watch the Grand Prix of China
F1 Q&A: Chinese Grand Prix, Ricciardo, Albon, and Alonso
How the Chinese Grand Prix sprint qualifying went
Sixth-place Red Bull Sergio Perez split the Ferraris of Carlos Sainz and Charles Leclerc, who finished seventh after suffering a first-lap collision.
Oscar Piastri of McLaren came in eighth place, ahead of Zhou Guanyu, who thrilled his home crowd, and Valtteri Bottas’ Sauber.
“I got a bit nervous,” stated Norris. These were situations where you had to push and take a lot of risk. Despite my quickness, I had to continually back off as I kept catching up to the Ferrari.