He signed a contract extension with Penske prior to the 2012 season. At the season-opening Grand Prix of St. Petersburg, Castroneves passed J. R. Hildebrand with 26 laps to go to win. He took pole position for the following Indy Grand Prix of Alabama and finished third. In the Indianapolis 500, Castroneves qualified sixth, but finished tenth due to his car lacking downforce. He then took three sixth places at Milwaukee, Iowa and Toronto. and won the Edmonton Indy to draw within 23 points of championship leader Ryan Hunter-Reay. Castroneves ended the season with three more top-tens for fourth overall with 431 points.