PHILADELPHIA -- Ian Snell has become a soild part of Pittsburgh's starting rotation.
"He has gradually moved up the ladder and he's becoming a mainstay in our rotation," Pittsburgh manager Jim Tracy said. "He's done a much better job of not only mixing up his pitches, but hitting his location with better consistency, to both sides of the plate. Those are adjustments that he has made that have helped him greatly."
Jason Bay and Freddy Sanchez, Pittsburgh's selections for next week's All-Star Game, each drove in a run in the first inning. The Pirates, who have lost seven straight series, improved to 10-34 away from Pittsburgh, the worst road record in the major leagues.
Chase Utley had an RBI double for Philadelphia, which has lost three straight games and eight consecutive series.
Snell (8-6) stopped a personal three-game losing streak, recording his first win since June 10. He beat the Phillies 3-1 on April 24, again going seven innings.
On Friday, he held the Phillies to one run with six strikeouts and three walks. He retired the final six batters he faced.
"I'm feeling more comfortable," Snell said. "You're going to have ups and downs during the season and I couldn't deal with them last year. I'm doing better with that this season and I wanted to finish the first half strong."
To counter the Phillies' heavy left-handed lineup late the game, the Pirates used southpaws Damaso Marte and Mike Gonzalez out of the bullpen to close the win. Marte surrendered an unearned run in the eighth on a sacrifice fly by Bobby Abreu, and Gonzalez pitched the ninth for his 13th save in as many chances.
"Ian's performance set up everything else we did in the bullpen," Tracy said.
Jon Lieber (3-6) pitched well in his first start since May 29, when he was sidelined with a groin injury. He worked seven innings, giving up three runs -- two earned -- and five hits with two strikeouts and one walk.
"I felt good, but runs are runs and I'm responsible for them," Lieber said. "I didn't make good pitches at those times."
The Phillies dropped to 6-20 since June 8. Utley had a costly error at second base and Lieber failed to cover first base on another key play -- both in the first inning.
"If there's a way for us to make a mistake, we'll find it," Philadelphia manager Charlie Manuel said.
On the flip side, Tracy believes Pittsburgh is beginning to put things together over the last 10 games despite a 4-6 record over that span.
"We've had much better execution in these last 10 games," Tracy said. "The younger players are starting to figure some things out and that's encouraging to see."
Pittsburgh took a 2-0 lead on an RBI double by Bay and a sacrifice fly by Sanchez. On Sanchez's fly ball, the throw by right fielder Abreu was on line and beat Sean Casey to the plate, but catcher Chris Coste couldn't come up with the short hop and the ball bounced to the backstop.
The Pirates made it 3-0 in the fifth on Casey's sacrifice fly.
Utley's run-scoring double made it 3-1 in the fifth and on the play, Pirates shortstop Jack Wilson's relay throw from shallow left field got Jimmy Rollins trying to score from first base.
"It took perfect execution on that play, if just one of those throws (from left fielder Bay or Wilson) are off line just a little bit, that run scores," Tracy said.
"That was sweet," he said. "Jason did a great job getting the ball off the wall and Ronny Paulino did a great job of blocking the plate. It was a perfect play."
Phillies C Mike Lieberthal, on the 15-day DL with a strained left hip, will begin a rehab assignment on Saturday with Triple-A Scranton. ... Casey went 0-for-4, snapping his consecutive on-base streak at 14 games. ... Utley extended his hitting streak to 13 games. ... Abreu drew two walks, raising his major league-leading total to 81. ... A postgame fireworks display helped produce a sellout crowd of 45,025.