McCutchen had three hits in the victory, which kept Pittsburgh one game behind the St. Louis Cardinals in the heated NL Central race.
Francisco Liriano (16-7) went six innings for the victory, holding the Rangers to one run on six hits. Mark Melancon weathered a two-run rally by the Rangers in the bottom of the ninth and came away with a hard-earned save.
Rookie Martin Perez (9-4) took the loss for the Rangers, who remained two games behind Oakland in the AL West race. Perez, who had won his six previous starts, allowed four runs on nine hits in five-plus innings.