Verstappen's lap of 1m27.422s meant he finished 0.474s clear of championship leader Hamilton, but the Red Bull driver used soft tyres while the Briton used medium Pirellis for their fastest laps.
Lance Stroll was third quickest in the Racing Point in a session interrupted early on by a red flag after Antonio Giovinazzi spun his Alfa Romeo and left debris on track.
Verstappen's teammate Alex Albon and Ferrari's Charles Leclerc completed the top five.
Nico Hulkenberg, a last-minute replacement for Sergio Perez at Racing Point, made a promising start to his weekend, setting the ninth fastest time of the day.
Ferrari's Sebastian Vettel finished at the bottom of the timesheets after failing to complete a timed lap following a problem with the intercooler system of his Ferrari.
Full report to follow