The world champion was 0.286 seconds quicker than the Finn, whose title challenge is in danger of fizzling out before half way through the season, BBC Sport reported.
Bottas heads into the race 29 points behind Hamilton and needs to beat him to get his challenge back on track.
Behind them, Ferrari's Charles Leclerc was third while teammate Sebastian Vettel could manage only seventh.
Mercedes was untouchable at the front, as it has looked all weekend on this demanding track in the Provencal hills.
Bottas had looked to have an edge on Hamilton through practice, but when it mattered the Briton made it count, as he so often does.
It was Hamilton's third pole of the season, matching Bottas' tally.
In the final qualifying session, Hamilton was 0.157secs quicker than Bottas on the first runs.
Trying to improve, Bottas had a scrappy lap on his second attempt and failed to improve, while Hamilton took a few extra fractions off his time, despite a small error in the penultimate corner.
What they said
Hamilton said, "Valtteri has been quick all weekend, and the last two laps were the ones. The last one I was up nearly had a second and I lost it in the second to last corner."
Bottas said, "It has been really close all weekend, down to fine details, but in final qualifying the wind changed and that made the track different and my lines did not work in a couple of places."