The NL East-leading Phillies have won seven of eight, all at home, after entering their 10-game homestand with 14 losses in 18 games.
"Here lately, it's kind of like we're getting used to winning again," manager Charlie Manuel said.
Blanton (6-4) allowed one run and four hits over 7 1/3 innings in his second consecutive effective outing. The right-hander pitched 7 1/3 innings in Philadelphia's 2-0 victory over the New York Mets on Sunday, and is 4-1 with a 2.44 ERA in his last nine starts.
"It does feel good," Blanton said of the Phillies' winning stretch. "A couple more [wins] to close it out and take the momentum into the second half."
Manuel liked the way Blanton attacked the Pirates, calling him "a bulldog."
"The fastball makes him go and he's not afraid to use his fastball," Manuel said. "He's throwing the ball good right now."
Werth, picked by Manuel to replace injured outfielder Carlos Beltran on the NL All-Star roster, hit a two-run double in the third to give the Phillies a 3-1 lead.
Fellow All-Star Shane Victorino went 3 for 4 with two doubles for Philadelphia, and is 17 for 34 in his last eight games.
Pittsburgh's Zach Duke (8-8) tossed his third complete game of the season, allowing five hits, and lost for the fourth time in his last five decisions. He allowed only one hit, Victorino's eighth-inning double, after the third.
Duke is winless in his last seven road starts and Pittsburgh has scored just 18 runs in his eight losses.
"Duke did a great job against a great offensive team," Pittsburgh manager John Russell said. "Both pitchers did a great job."
Garrett Jones and Brandon Moss homered for the Pirates, who have lost seven of nine. All-Star Freddy Sanchez, returning to the lineup after missing the last six games with lower back tightness, went 2 for 4 with a double.
The Phillies activated All-Star left fielder Raul Ibanez from the disabled list. Ibanez, who missed 20 games with a groin injury, was available to pinch hit but did not play. Manuel said the outfielder would be in the starting lineup Saturday. ... Pittsburgh center fielder Andrew McCutchen's error in the third was the Pirates' first error in a season-high 66 2/3 innings.