Power, who started from the pole position, was especially sharp in the second half of the 100-lap race. He grabbed the lead in the 74th lap and didn't trail after that.
He finished 0.8 seconds ahead of Justin Wilson, driving for Dreyer and Reinbold Racing, with Power's Penske teammates Ryan Briscoe and Helio Castroneves third and fourth, respectively. Briscoe, who started in the 19th slot, set a race record by improving 13 places from start to finish.
The race was postponed Sunday when rain left the street course under 4 inches of water.
Power also won the season-opening race two weeks ago in Brazil. He is the first driver to win the first two IndyCar races of the season since Sam Hornish Jr. in 2001.