The 28-year-old Finn, who started from pole position, soaked tremendous pressure from Hamilton for several laps before claiming his third career win.
Hamilton, who had already secured the drivers’ title, came home four seconds behind Bottas.
Four-time champion Sebastian Vettel of Ferrari came a distant third ahead of teammate Kimi Raikkonen.
Vettel’s podium finish secured him a second place in the championship.
Max Verstappen, Nico Hulkenberg, Sergio Perez, Esteban Ocon, Fernando Alonso and Felipe Massa were the other top 10 finishers.
Hulkenberg’s sixth-place finish assured Renault of sixth place in the constructors’ championship ahead of Toro Rosso.
“Such a good car today… so thank you for that and the season – it’s a very nice way to end it,” said Bottas to his team.
Hamilton, who ended his season having scored points in every race, voiced his dislike for the narrow track which makes overtaking very difficult.