The Australian was hardly challenged at the four-kilometre, 11-turn Anhembi circuit, taking control of the race from the start to finish ahead of American Ryan Hunter Reay.
"I think I love Brazil, I love Sao Paulo," Power said after climbing out of his car.
Takuma Sato had a great run to finish third for his first podium after starting only 25th and overcoming a drive-thru penalty, while Brazilian Helio Castroneves was fourth after starting 18th. Three-time defending series champion Dario Franchitti recovered from an early spin to finish fifth.
It was Power's third straight victory after four races this season, and Penske's fourth straight. It is the first time the team wins four in a row to start the season, dating to the introduction of CART in 1979. Penske also won the first three races of the year in 2010.
Power became the first driver since Scott Dixon in 2007 to win three consecutive races. It was the Australian's 18th career victory at IndyCar.
"Something is clicking there very well," Hunter-Reay said. "I don't think it's a coincidence at all that they've won as many as they've won this season. Three out of four, that's astonishing."
James Hinchcliffe of Oakville, Ont., started fourth and finished sixth.
Power led the most laps and clearly was faster than the rest of the field on Sunday, but had to fend off Hunter-Reay on a couple of late restarts, including one with five laps to go. Power crossed the line less than a second ahead of the American.
"I was giving absolutely everything I had to keep Ryan behind," said Power, who started from the pole position. "A solid day when you look at it, very solid, no mistakes."
Reay said he knew his best chance was to try to make a move at the restarts.
"I was certainly going hard, giving Will Power every bit of the fight that I had in me going into Turn 1. I tried to get him on the outside," the Andretti Autosport driver said. "It was a good race, a lot of fun, but came out just a little bit short."
Last year Power won from the pole in a race postponed for a day because of heavy rain. He won the inaugural Sao Paulo 300 in 2010, passing Hunter-Reay with three laps to go to win the rain-shortened race.
Power was coming off victories in Alabama and Long Beach and his triumph in Sao Paulo helped him increase his series points lead heading into the Indy 500 next month. He has a 45-point lead over Castroneves, the best Brazilian at the Anhembi circuit on Sunday.
"Definitely good for the points, the biggest one is next race and we'll try to make it four in a row," he said.
Japan's Sato surprised with his third-place finish after starting back in the grid because of an engine change. He also overcame a drive-thru penalty on lap 12, using a three-stop strategy and being aggressive on restarts to move to the front.
"Will was just about lapping me when I had a drive-thru penalty, so we were really luck," Sato said. "It was an eventful and very exciting race. Every restart really helped me a lot."
Weather was a concern as it rained hard during the morning practice session and it was expected to rain all day on Sunday, but the race started and finished on a mostly dry track. There was a light drizzle during the race, but not enough to get the track wet. Rain had affected the Sao Paulo race every year since it joined the IndyCar calendar in 2010.
Eight drivers were involved in a crash at a restart with eight laps to go, and although there was little contact between the cars, the track was blocked as the cars tried to make it through the first chicane.
Dixon was on a different pit strategy and passed Power for the lead on lap 52 as the Australian came off the pits, but Dixon — who started third — had to make another stop at the end and finished only 17th.
Franchitti stayed close to Power in the beginning of the race but spun on a restart on lap 27. He apparently was touched from behind at the first chicane and lost control of his Chip Ganassi Racing car. He needed to use pit strategy to race back to the front to finish in the top five after starting second. It was his first top five of the season.
Ryan Briscoe's race ended when he hit the wall exiting a turn on lap 22, and Josef Newgarden was involved in an accident at chicane on a restart on lap 29.
Rubens Barrichello, in his first race at home since joining IndyCar this season after a 19-year career in Formula One, ran as high as third place but fell to 10th at the end.
"Unfortunately, because of all the caution flags our strategy didn't work out today, but it will some other day," he said.