McCutchen, pinch hitting for Alfonso Rivas, hit a grounder up the middle off JoJo Romero (4-2) that eluded second baseman Nolan Gorman, scoring automatic runner Endy Rodríguez.
Llover Peguero scored on a wild pitch, and Bryan Reynolds drove in Ji Hwan Bae with a sacrifice fly to extend the Pittsburgh lead to 4-1.
“Right now, we’re playing together,” Peguero said. “I feel like that’s one thing that’s been showing up, and we’re just holding each other accountable. When we do those things, everybody’s at the same pace and that’s what we’ve been doing. I’m not surprised right now that we’re still doing it.”
Colin Holderman, Carmen Mlodzinski and Colin Selby (2-0) each pitched a scoreless inning of relief, setting the stage for David Bednar to earn his 30th save of the season.
Mitch Keller allowed one run on five hits, walked three batters and struck out eight in six innings as Pittsburgh won for the third time in 11 extra-inning contests.
“We were getting some good, weak contact,” Keller said. “Just getting into good, advantageous counts for myself and then just putting them away and making them hit my pitch.”
Dakota Hudson surrendered one run on three hits and two walks and struck out five in seven innings.
“He pounded the zone,” Cardinals manager Oliver Marmol said. “These guys just pounded his sinker straight into the ground all day and he kept attacking them with it. He was on the ground a ton, but didn’t get a ton of swing and miss.”
The Cardinals’ Willson Contreras hit his 16th home run of the season to center field to lead off the bottom of the sixth inning, tying the game at 1. It was Contreras’ third home run in his last three games after going deep twice on Tuesday night against San Diego.
Peguero drew a two-out walk and scored on Rivas’ double down the right field line to put Pittsburgh up 1-0 in the second inning.
Peguero potentially saved the game when he made a diving, over the shoulder catch of a Nolan Gorman fly out with two runners on base to end the third inning.
“Unbelievable,” Peguero said. “Honestly, I didn’t even know if I was going to be able to get there because I was pretty far away. But I thought I had a good jump, and that’s why I was able to make that catch.”
Pirates: OF Josh Palacios was scratched from the starting lineup with left wrist discomfort, but appeared as a defensive replacement in the bottom of the 10th inning. … The Pirates also activated Mlodzinski (right elbow soreness) from the 15-day injured list and purchased the contract of OF/1B Miguel Andujar from Triple-A Indianapolis. RHP Max Kranick (UCL surgery) was activated from the 60-day injured list and optioned to Indianapolis.
Cardinals: OF Lars Nootbaar (lower abdomen contusion) was activated from the 10-day injured list, and RHP Ryan Helsley (right forearm strain) was activated from the 60-day injured list. The Cardinals also activated RHP Jake Woodford (right shoulder strain) from the 15-day injured list and optioned him to Triple-A Memphis.
Cardinals LHP Drew Rom (0-2, 8.00 ERA) will be making his third career start, and first at home, Saturday night. He made his major league debut against the Pirates on Aug. 21. Pittsburgh did not announce a starter.