Hamilton improved late on to topple title rival Sebastian Vettel, having spent most of the session at the foot of the times following an early rain shower.
Kimi Raikkonen led Ferrari teammate Vettel by a tenth on their initial flying laps on supersofts before light rain increased after a quarter of an hour.
That left the Ferraris on top, with Friday pacesetter and championship leader Hamilton slowest of the 20 drivers.
Hamilton did not set a representative time in his Mercedes after aborting his first flying lap then locking up and going down the escape road at the final chicane on his second.
A slide for Sergio Perez at Spoon confirmed slick tyres were no longer suitable for the conditions and track action stopped for 15 minutes while teams waited for the weather to improve.
Valtteri Bottas broke the silence just after the half-hour mark and reported the track was fine but for damp kerbs, and that sparked a series of improvements.
Fernando Alonso was the first to lower his time with 20 minutes to go, although the McLaren driver remained near the tail end of the field in 17th.
It took a while for the leaders to find time, with Raikkonen messing up his first effort by going off-track at the end of the esses in the first sector.
Vettel set a personal best in the first sector but then ran wide exiting Degner 2, and complained he was still struggling with the rear as he failed to improve.
The final 10 minutes proved decisive, with first Vettel going quicker on a 1m29.715s and then Hamilton lapping 0.116s quicker despite a slightly scruffy lap.
Vettel was quicker in the first two sectors but shipped almost have a second in the final sector, which is the second part of the long back straight, 130R and the final chicane.
Raikkonen did not improve and fell to third, ahead of Max Verstappen in the leading Red Bull.
Bottas ended up fifth in the second Mercedes, 0.8s slower than Hamilton, with Red Bull’s Daniel Ricciardo sixth.
A late flier from Esteban Ocon took him to seventh ahead of Racing Point Force India teammate Sergio Perez as Carlos Sainz Jr (Renault) and Kevin Magnussen (Haas) completed the top 10.
Any chance of final improvements was extinguished with less than three minutes to go when Hulkenberg rear-ended his Renault into the barriers halfway through the uphill esses at the start of the lap.
Hulkenberg ran a little wide on the exit of the first left-right and his car swapped ends as he tried to correct the slide, which sent him into the wall with quite considerable damage.
The session was red flagged and did not resume.