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.