World championship leader Sebastian Vettel, who had started on pole position alongside Ferrari team mate Kimi Raikkonen, extended his advantage with second place after putting Bottas under huge pressure at the finish.
The German crossed the line a mere 0.6 seconds behind the 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. "Worth the wait."
Raikkonen was third with Britain's Lewis Hamilton struggling to match the leaders' pace and finishing fourth for Mercedes.