The Phillies overcame three solo homers by the Red Sox to win their sixth in a row, their longest such streak of the season.
Hunter Pence had a solo shot for the Phillies and Freddy Galvis added another in the eighth, giving support to starter Cole Hamels.
Hamels (6-1) gave up three runs on six hits over seven innings. He walked one and struck out nine. Jonathan Papelbon worked around a hit in the ninth to pick up his 12th save in as many opportunities.
Daniel Bard (3-5) suffered the loss, allowing five runs on three hits with five walks in five innings.
Boston schools pull out free condoms over wrapping complaints
NBC reportedly holds celebs hostage to Jimmy Fallon's show