The 32-year-old is now well placed to close the gap on World Championship leader Sebastian Vettel after the Ferrari driver could only finish fourth quickest in qualifying behind Hamilton, Bottas and Scuderia team-mate Kimi Raikkonen.More news: Pennsylvania gerrymander gave GOP a big boost — AP analysis
Esteban Ocon was the leading Force India in fifth with Felipe Massa, who narrowly avoided contact at Turn 8, was seventh.
Hamilton, meanwhile, seemed to get stuck in traffic and with many cars out on track pushing hard it was hard for him to get any room to set a quick time.
"The team really did a fantastic job to set the auto up in the right way and Lewis with his lap here - I have never seen anything like it", said the 68-year-old Austrian. "On the first lap [in Q3] I had the time, but I made a mistake in the last corner". "A lot of pressure". It is probably difficult for the public to understand why we are struggling but these tyres are really hard and we are trying all these things to get some temperature in the tyre, weaving like insane.
Friday pacesetter Max Verstappen was the first out when the track went green following his team-mate's crash and managed to get in two laps, but neither were good enough to secure him a higher grid position than fifth.More news: Dashcam video shows officer firing 7 shots into Castile car
Accepting responsibility for his qualifying result, Vettel said, "In the end, I was alone and had no tow in the last sector. As I said other people were doing a better job and therefore their qualified in front of us". "We need to get on top of that because it shouldn't happen". "Coming out of the last corner I was just "thinking please be enough". "I'm not a big fan of excuses, so I could have done a bit better".
Nico Hulkenberg was 11th, while his Renault teammate Jolyon Palmer failed to set a representative time after stopping on track early on with a fire at the rear of the auto.
Jolyon Palmer was unable to take part after his Renault caught fire due to a fuel leak during the morning final practice, but approached the stewards for permission to take part in Sunday's race.
OUT: Daniil Kvyat (Toro Rosso), Carlos Sainz (Toro Rosso), Kevin Magnussen (Haas), Nico Hulkenberg (Renault), Pascal Wehrlein (Sauber).More news: Four more Grenfell Tower victims identified
Meanwhile, already knowing they would be starting at the back of the field with 40 and 35-place grid penalties respectively for a myriad of engine and gearbox penalties, McLaren's Fernando Alonso and Stoffel Vandoorne dropped out in Q1.