Hamilton edged his teammate by 0.163s but the Briton's margin over third-placed man Lando Norris was over half a second.
The two drivers are also in the middle of a private title battle this year, but after Bottas fell 30 points behind Hamilton with a tyre failure at last weekend's British Grand Prix, it was all the more crucial that he hit back with a pole position on Saturday.
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.
Hamilton stole an early march on Bottas but a poor first sector on his final run handed the initiative to his team-mate, with the Finn claiming his first pole since the opening round in Austria.
Mercedes has come out and said it is not looking to give Mexican driver Gutierrez the required testing kilometres which would allow him to regain his super licence.
"It wasn't that great, but Valtteri did a good job and deserved pole, I guess", he said. This result beats the leading lap time from FP1 last weekend, when Verstappen produced a 1:27.422.
In Preseason Coaches' Poll
Other Big Ten teams who made the cut include Wisconsin at No. 13, MI (15), Minnesota (18), and Iowa (23). It's the second straight season the Mountaineers began the year without a single vote.
Assessing his last-gasp push on his final hot lap, Bottas said: "It feels good".
It was the first time this season that Bottas had topped a Friday session. Set-up wise we made good steps from last weekend - that's why I think the qualifying performance was better than last weekend - so really pleased with that.
Esteban Ocon missed out on a top-10 berth by 0.126s, but the Renault driver is nearly certain to start lower than 11th after a post-qualifying investigation into an allegation he blocked George Russell in Q1 out of Aintree. George Russell finished 15th for Williams.
AlphaTauri's Daniil Kvyat was the shock casualty at this point, as he lost one lap to exceeding track limits and then ran wide at Becketts and damaged his floor.
Esteban Ocon was ninth for Renault ahead of Spaniard Carlos Sainz who completed the top-10 for McLaren.
The Formula One 2020 fifth race weekend's Free Practice sessions are done with at Silverstone for the 70th Anniversary Grand Prix.