Kuhl used his sinking, two-seam fastball to rack up quick outs. He allowed his only hit in the fifth inning.
"I looked back, watched a ton of video and tried to get back to when I was good," the second-year pitcher said. "It feels great to have it show up in the game -- all the work paying off. It just feels like I'm on the right track."
Philadelphia starter Aaron Nola (2-1) got back on track, as well. Nola returned from the disabled list and threw seven strong innings. The right-hander, who had been sidelined with a back injury, gave up four hits and faltered just briefly in the sixth.
Adam Frazier and Josh Harrison started the inning with consecutive singles, putting runners at the corners. Harrison stole second and, after Andrew McCutchen grounded out, Josh Bell was intentionally walked to load the bases. Nola hit Freese with a pitch, forcing in a run, before John Jaso grounded into an inning-ending double play.
"I'm not really good about getting out of the way, anyway," Freese said. "But I saw it coming and I was trying to wear it, for sure. Just get that RBI."
Philadelphia lost for the ninth time in 11 games. But the 23-year-old Nola struck out five and had thrown 89 pitches when he was removed for a pinch hitter in the eighth.
"What a breath of fresh air that was," Phillies manager Pete Mackanin said. "He looked like his old self today. That's the thing that I take out of this game that I'm really happy about. The only run scored was on a hit batsman. He looked like his old self and I'm really happy about that. That's about all I'm happy about today."
Pittsburgh's bullpen has been pitching well of late, and that's what gave manager Clint Hurdle the confidence to pull Kuhl for a pinch hitter in the fifth.
"Watch the way I lean on them. It shows you my confidence level," Hurdle said. "We've got guys out there we feel very confident in giving the ball to and can get things done."
The game started on time and was never delayed but was played during a steady rain that became heavy at times.
Frazier finished 2 for 3 with a walk to increase his batting average to .369. He would rank second in the National League if he had enough plate appearances to qualify. Frazier missed 18 games with a hamstring injury in late April and early May.
Lefties were batting .391 against Kuhl coming into the game, but he held the six Philadelphia left-handed batters hitless with a walk and three strikeouts.
Pirates: OF Gregory Polanco hit off a tee and played catch Saturday for the first time since being placed on the 10-day disabled list with a strained left hamstring May 17. If all goes well, he is expected to take batting practice for the first time on Monday.
Phillies: OF Daniel Nava missed his second game with a strained left hamstring. He is day to day.
Pirates: RHP Gerrit Cole (2-4, 2.84 ERA) starts the opener of a four-game series in Atlanta on Monday night. Cole has compiled eight consecutive quality starts and pitched seven innings with two earned runs or fewer in each of his last three outings. He went six innings and allowed three runs against the Braves on April 9, but did not factor in the decision.
Phillies: RHP Jerad Eickhoff (0-4, 4.53) hopes to build off the momentum of his last start when Philadelphia hosts Colorado on Monday night. In his most recent outing, Eickhoff permitted two earned runs over six innings. He hadn't had a six-inning start in a full month, and his ERA rose more than two runs during that span.