Bottas started third in his Mercedes but led into Turn 2 after getting the jump on poleman Vettel and the other Ferrari of Kimi Raikkonen.
After an early safety car period, Bottas led comfortably in the opening half of the grand prix, extending his lead to 5.5 seconds at one stage and pitting on lap 27 of 52 with a 2.5s advantage.
He then withstood a late charge as Vettel rallied with fresher super-softs to win by 0.6s.
"Our start was probably a match with Valtteri," said Vettel. "Maybe he gained a bit of momentum, he had a massive tow.
"I defended the inside but when we approached the braking zone he was in front and able to shut the door on me.
"That is where he won the race, he then had an amazing first stint - I couldn't stay with him.
"It was Valtteri's race, he drove an incredible race, he had incredible pace.
Read the full article on eurosport.co.uk: Vettel says 'amazing' stint key to Bottas win