“I knew I had to go for it. There was a little bit of a gap and it turned out to be very important.”
Hamilton started last after crashing in qualifying on the first lap, but managed to push his way into contention, staying out longer before pitting while the other leaders changed tires earlier because they were running on softer compounds.
Bottas finished second with Kimi Raikkonen of Ferrari taking third. Hamilton was fourth, just 5.4 seconds behind Vettel.
Hamilton closed relentlessly, and Vettel was asked if he was ever worried about the Englishman passing him.
“Not really,” he replied. “I didn't think he was a threat.”
Hamilton said he expected to finish fifth, at best.
“This was the first time I pushed the engine like that,” he said. “It was more than I looked for. I was very happy with the day. Yesterday was horrible.”
Vettel has 302 points with the final race in two weeks in Abu Dhabi. Third-place Bottas has 280. Even if Bottas wins in Abu Dhabi, Vettel can take second place in the season rankings by finishing in eighth place or higher.
“He's got quite a lead now, so it will take a miracle in Abu Dhabi,” Bottas said. “I was very disappointed in the race start. After that, I was trying to catch up on Sebastian but it didn't lead to anything more.”
The victory was a long time coming for Vettel, a four-time champion — like Hamilton — who had not won since the Hungarian Grand Prix in July.
Vettel won three of the first six races this season and then faded as Hamilton surged.
Calling it a “great relief,” Vettel said “it's been a tough day, a tough race. There was no room for mistakes.”
Brazilian Felipe Massa finished seventh in his final race in Brazil. He will bow out of Formula One in two weeks and is expected to race next season in the electric-powered Formula E series.
He won 11 races in his career and came within a point of taking the season title in 2008, which was won by Hamilton. A year ago he said he was retiring, only to come back with Williams. It won't happen again, he said, addressing the sellout crowd at the Interlagos track.
Massa's departure means F1 will be without a Brazilian driver for the first time since 1969.
“I am going to miss you a lot,” he told fans. “The thrill I felt today was immense, just like last year. I will never forget today.”