Hamilton's eighth win of the season, career 70th and third in Russia.
The gap between him and Vettel is now 50 points.
Bottas started on pole and led until being told to let Hamilton overtake.
He has now been second six times this year.
Mercedes increased their constructor's lead to 53 points.
The team have won every Russian Grand Prix to date, since 2014.