Championship leader Sebastian Vettel, who had started on pole position alongside Ferrari team mate Kimi Raikkonen, extended his advantage to 13 points with second place after putting Bottas under huge pressure at the finish.
The German crossed the line just 0.6 seconds behind a man who joined Mercedes from Williams in January as replacement for retired 2016 champion Nico Rosberg and was finally a winner after 81 starts.
“Took quite a while, huh?,” said the Finn over the radio as he took the chequered flag, an expletive bleeped out for the listening world as he whooped in a rare outburst of emotion. “Worth the wait.”