The championship leader and six times champion had been second behind the Finn in the opening morning session at Silverstone, but was fastest in torrid heat and temperatures of 36 Celsius.
Daniel Ricciardo was third for Renault, eight-tenths off the pace set by Hamilton with his best lap of one minute and 25.606 seconds, enough to lift him one-tenth clear of Bottas.
The two had traded fastest laps during the session, which ended early with two minutes remaining when Antonio Giovinazzi was left stranded with his Alfa Romeo at Becketts after Sebastian Vettel had suffered an engine failure in his Ferrari at Copse.
The session was red-flagged and not re-started.
Max Verstappen was fourth for Red Bull ahead of the Racing Point pairing of Lance Stroll and Nico Hulkenberg, the Canadian edging ahead of the stand-in German driver, who was replacing coronavirus victim Sergio Perez.
The Mexican had returned a positive result from a Covid-19 test overnight Thursday and missed a second successive race, allowing Hulkenberg to impress again in the controversial ‘pink Mercedes’.
The team had been docked 15 points and fined earlier on Friday after a stewards hearing upheld a Renault protest and ruled that their brake ducts were not legal.
Behind them, Charles Leclerc was seventh for Ferrari ahead of Lando Norris and Carlos Sainz of McLaren and Esteban Ocon in the second Renault.