PHOENIX -- Dave Roberts is getting better, and maybe even faster, with age.
"He makes us go, and he did today," San Diego manager Bruce Bochy said of Roberts, who was 8-for-14 in the series. "I tell you what, he's been consistent all year."
Mike Piazza drove in two runs with a pair of bloop singles.
"They all count," Piazza said. "I went through a stretch where I was hitting the ball pretty hard and had nothing to show for it. I don't know if they even out, but it's nice to have a couple of balls you don't square up on very good and they fall in for hits."
The Padres took two of three from the Diamondbacks and maintained their wild-card lead. San Diego leads Philadelphia by a half-game and Cincinnati by one game, and remained three games behind first-place Los Angeles in the NL West.
The fading Diamondbacks finished their homestand 2-4, and were 5-11 in a stretch of 16 consecutive games against NL West foes.
"It's terrible," Arizona's Eric Byrnes said. "We're at home, we're not facing Cy Young, we've got to win these games and we didn't. We're going to have to go on a stretch and really play well on the road. If not, we start looking at next year."
Roberts, in the fifth four-hit game of his career, raised his average to .312. He also stole two bases, giving him 40 for the season.
"It's definitely my best season," he said. "When I was in Los Angeles, I took a lot of pitches, did a lot of bunting and stealing bases, things like that. Last year, I had a lot more power, for me, hit more home runs and doubles. Now it's a little of both."
Trevor Hoffman allowed a one-out single in the ninth, but struck out three for his NL-leading 35th save in 39 tries.
He has 471 career saves, seven shy of Lee Smith for the major league record.
"I've run out of things to say about him," Bochy said. "It's amazing. He's been a model of consistency. In my mind, really in anybody's mind, this guy's going to the Hall of Fame."
Bochy thinks Hoffman has a chance to break the record this season.
"We play a lot of close games, so there's a good chance he'll have a shot at it," the manager said.
Hoffman said he's glad his push for the record will come in a playoff run.
"The exciting part is it's going to be somewhat in the shadows, in a sense," he said, "where that's not going to be the main focal point. It's going to be about getting to the playoffs."
Thompson (4-5) allowed one run on four hits in 5 1/3 innings for his first victory in eight starts. He was 0-4 with five no-decisions, including a relief appearance, since his last win June 20 at Texas.
"You tip your hat to Thompson today, but we're getting tired of tipping hats," Diamondbacks manager Bob Melvin said. "He located the ball well, but offensively off a guy like that, we've got to do a little bit better."
Claudio Vargas (10-9) gave up three runs on six hits in five innings in his first loss in five outings.
The Padres scored in the first when Roberts singled, stole second and scored on Piazza's two-out bloop single.
In the second, Josh Barfield drew a two-out walk, Thompson singled and Roberts followed with an RBI single.
Arizona cut the lead to a 2-1 in the third. Stephen Drew beat out an infield single, was sacrificed to second by Vargas, took third on a wild pitch and scored on Chris Young's groundout.
Piazza's two-out bloop single scored Brian Giles from second to put San Diego ahead 4-1 in the fifth.
The Diamondbacks had runners at first and second with no outs in the sixth after singles by Young and Orlando Hudson. After Luis Gonzalez flied out to left, sidearm reliever Cla Meredith came on to strike out Eric Byrnes and get Johnny Estrada to ground out to third.
Meredith also pitched the seventh to run his streak of consecutive scoreless innings to 23.
- Arizona RHP Brandon Webb left Wednesday to attend the funeral of close friend Jon Hooker. The two were teammates and roommates at the University of Kentucky. Hooker and his new bride were killed in the crash of a commuter jetliner in Lexington on Sunday.
- Young made a leaping catch at the center-field wall to rob Adrian Gonzalez in the third.
- The Padres were 13-15 in August, the Diamondbacks 10-18.