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."
"This strange opportunity came over the winter to join this team and I have to thank the team for making this possible," he added after meeting Russian president Vladimir Putin before spraying champagne on the podium.
"First win and hopefully first of many... it's a good feeling."
It was the first time in four years, since Raikkonen won with Lotus in Australia in 2013, that a Finnish driver had stood on the top step.
Raikkonen made it two Finns in the top three with Britain's Lewis Hamilton, Vettel's closest rival, struggling to match the leaders' pace and finishing fourth for Mercedes.
Vettel now has 86 points after the opening four races with triple champion Hamilton, a winner in China, second on 73 and Bottas third with 63.
Mercedes continued their record of winning every Russian Grand Prix since the first in 2014, this time against the odds after Ferrari had swept the front row for the first time in nine years.
Read the full article on eurosport.co.uk: Bottas earns maiden win for Mercedes with Hamilton stuck in fourth