Charlie Morton (2-3) rebounded from consecutive poor starts and allowed one earned run in six innings, and the Pirates matched a season high for runs at PNC Park, winning for the first time in their past three games.
Jordan Schafer went 2 for 4 with an RBI for Houston, which had won two of its previous three. The Astros have scored 10 runs in their past six games.
McCutchen went 4 for 4 with his third home run and three singles. He had three hits in as many at-bats against Houston starter J.A. Happ (2-3), giving him six consecutive hits against left-handed pitching and improving his average against lefties to .452.
Morton had lost each of his two previous outings, allowing 11 runs in those games. He was charged with two runs on seven hits and a walk with no strikeouts. The only runs he allowed came when Schafer drove in Chris Snyder with a double in the fifth, and when Jose Altuve scored on Justin Maxwell's fielder's choice in the sixth.
That was the only run Morton allowed that inning after gave up three consecutive singles to begin it, preserving the Pirates' lead.
|More on Astros-Pirates|
|More MLB coverage|
Chris Resop and Tony Watson combined for two scoreless innings, and Juan Cruz pitched the ninth for his third save. Regular closer Joel Hanrahan is on the bereavement list after the death of his grandmother.
After Tabata scored on Neil Walker's sacrifice fly in the first, McCutchen gave the Pirates a 2-0 lead with a homer to right-center, his third.
Tabata's seemingly innocuous-looking pop fly the opposite way down the right-field line with two outs and no one on in the fifth cleared the 21-foot wall to give Pittsburgh a two-run lead back.
Morton got the final batter he would face, Matt Downs, to ground into a double play to end the sixth. The one run the Astros scored that inning after loading the bases with nobody out was better than the Pirates did in their sixth inning the previous night. Houston starter Bud Norris got out of the jam and the Astros won 1-0 Friday.
Pittsburgh fared better Saturday when its first three batters of the sixth reached. The Pirates scored twice - Clint Barmes drove in Pedro Alvarez with a sacrifice fly, and Casey McGehee scored on Rhiner Cruz's wild pitch.
Happ was charged with five runs - all earned - on six hits and a walk with four strikeouts in five-plus innings.
RHP Brad Lincoln will start for the Pirates on Monday in Miami. LHP Erik Bedard will have his outing pushed back until Wednesday in Washington. Bedard left his previous start during the second inning Wednesday due to back spasms. ... Astros manager Brad Mills said slumping outfielder J.D. Martinez would be back in the lineup Sunday after a three-game absence. ... Alvarez snapped an 0-for-22 slump with a sixth-inning double. ... Pittsburgh RHP A.J. Burnett (1-2, 6.08) faces LHP Wandy Rodriguez (3-3, 2.14) in the series finale Sunday afternoon.