Jerome Williams stifled San Diego over seven innings and the Philadelphia Phillies beat the Padres 5-3 on Sunday to complete a three-game sweep.
The Phillies notched their 16th win in 21 games, the majors' best mark since the All-Star break.
Williams (4-8) entered the game with an 0-6 road record this season before dominating the fading Padres. He was charged with one run and five hits and struck out three.
Ken Giles worked the ninth to collect his sixth save in nine chances.
The Padres matched their season-high with the sixth straight loss and they have dropped seven of their last eight.
Andrew Cashner (4-12) worked 6 1-3 innings and allowed three runs and eight hits. He struck out four.
Cesar Hernandez's RBI single in the seventh off reliever Brandon Maurer padded the Phillies' lead to 3-1. They left the bases loaded when Marc Rzepczynski struck out Ryan Howard.
Chase Utley added a two-run, pinch-hit double in the eighth.
Yangervis Solarte had an RBI single in the eighth to make it 5-2.
Justin Upton's two-out homer in the sixth cut the Phillies' lead to 2-1.
Odubel Herrera gave the Phillies a 2-0 lead when he hit his sixth homer of the season to open the sixth inning. Before Herrera's blast, Cashner had retired 14 of the previous 15 batters.
Williams gave the Phillies' unlikely second-half surge more life. He breezed through the first four innings, restricting the Padres to two baserunners.
The Phillies went ahead 1-0 in the first on Howard's RBI double. Hernandez and Herrrea singled and Howard smoked a line drive to right field that a diving Matt Kemp just missed to score Hernandez. With two runners in scoring position, Cashner escaped further damage by striking out Jeff Francoeur and getting Cody Asche to fly out.