Rosberg’s triumph ended Hamilton’s run of five straight wins and reduced the Briton’s lead in the championship from 24 points to 17 with one race remaining, the Abu Dhabi Grand Prix on November 23 23 with double points on offer to the winner.
The 29-year-old German, who had dominated every practice session at Interlagos and started from his 10th pole of the season, came home 1.457 seconds ahead of Hamilton.
The result gave Rosberg his first win and podium finish in Brazil, his first in eight races since victory on home soil in Germany in July, the fifth of his season and the eighth of his career.
For Mercedes, it was their record 11th one-two finish this year, beating the previous record held by McLaren who had scored 10 one-twos in their triumphant 1988 season with Frenchman Alain Prost and Brazilian Ayrton Senna.
Local favourite Felipe Massa came home third for Williams ahead of Jenson Button in what may have been his penultimate race for McLaren and four-time champion Sebastian Vettel of Red Bull.
Fernando Alonso finished sixth for Ferrari after a tense battle ahead of his team-mate Kimi Raikkonen who was seventh.
Nico Hulkenberg was eighth for Force India, Kevin Magnussen ninth in the second McLaren and Valtteri Bottas 10th in the second Williams.