With the Interlagos circuit in Sao Paulo hit by heavy rain, Hamilton drove a faultless race to claim his ninth victory of the season, with Rosberg finishing second.
That has seen the German's lead over his Mercedes rival cut to just 12 points heading into the finale in Abu Dhabi in a fortnight's time.
Red Bull's Dutch teenager Max Verstappen brilliantly overtook Rosberg shortly after the third restart from behind the safety car, but gambled on a change to intermediate rather than wet weather tires and lost position.
After a further pit stop, Verstappen carved his way back through the field to take the final stop on the podium.
His overtaking move on Sebastian Vettel saw the Ferrari star pushed on to the grass, disgruntled again after another tangle with the precocious youngster.
"He pushed me off the track, I was a little ahead with my nose and he just pushed me off the track," complained Vettel on race radio.
The appalling conditions led to a number of crashes with Ferrari's Kimi Raikkonen sliding off at high speed and lucky to avoid a more serious incident.
Later, there was heartbreak for Brazil's Felipe Massa in his final home grand prix as he crashed in his Williams.
There were emotional scenes as he got out of his car and walked back to the pits to a big ovation from the crowd.
He was taken to the medical center as a precaution, but is set to bow out of F1 after the 21st and final round of the season in Abu Dhabi.
Hamilton's victory was his first in 10 attempts in Brazil and his 52nd overall, but he still faces an uphill battle to claim his fourth world title and third in a row.
Rosberg will clinch his first championship crown by finishing in the first three in Abu Dhabi, assuming another Hamilton victory.
"I'm hunting. I'm gonna give it everything I've got. But right now, I'm just gonna enjoy the moment," was Hamilton's verdict after his pole to checkered flag romp.
Behind the podium places, Sergio Perez took fourth for Force India, a key result in the team's battle with Williams for fourth place in the Constructors' Championship.
There was also a rare two points for Brazil's Felipe Nasr in ninth place for Sauber.