MILWAUKEE -- Khalil Greene waited for his favorite at-bat -- his last of the game.
"Those are the situations you look forward to," Greene said. "I keep myself going by saying that I might be able to do something to help affect the outcome of a game at the end."
Joe Randa hit his career-high 37th double with one out in the eighth. After Xavier Nady grounded out, Greene hit a foul ball that fell into the stands, three rows beyond the reach of Brewers first baseman Lyle Overbay.
On the next pitch, reliever Kane Davis (1-1) left a fastball over the middle of the plate, and Greene hit his 11th homer of the season.
"I was trying to swing the bat with some authority, and not be overly defensive," said Greene, who is 5-for-12 with a homer and three RBI in three games since returning from the disabled list with a broken left toe.
"You're just hoping he puts one in play and gets a hit," San Diego manager Bruce Bochy said. "Greene put quite a charge in that one."
Ben Johnson added a two-run homer in the ninth, and the Padres needed it.
J.J. Hardy hit a two-out, two-run homer off Trevor Hoffman in the bottom of the inning after Wes Helms reached on an error by shortstop Greene. The closer still earned his 35th save in 37 opportunities by striking out Brady Clark to end the game.
"The underlying theme of all year is how well guys have responded with brief stints in the lineup," Hoffman said. "It's been a group of role players that have stepped up."
It was the third straight win for the Padres (67-66), who are above .500 for the first time since Aug. 12. They remain in first place in the NL West -- six games in front of Los Angeles -- and have gained two games in the standings since last being above .500.
Rudy Seanez (6-1) earned the win with one inning of relief. Padres starter Adam Eaton hasn't won in his last three starts after winning eight in a row. He gave up three runs and three hits in six innings.
Rick Helling was trying to get his first win since joining Milwaukee's starting rotation last week. He allowed two earned runs and six hits in 6 1/3 innings.
"It wasn't like we had a huge lead," Helling said. "A one-run lead against a good ball club is going to be tough to hold."
Davis was more direct.
"I'm supposed to hold it there," he said. "I didn't do my job."
In the fourth, Eaton walked Rickie Weeks and Overbay singled to put runners at the corners with one out. Carlos Lee's sacrifice fly scored Weeks, and Geoff Jenkins followed with his 18th homer, a two-run shot that gave the Brewers a 3-2 lead.
After Helling retired the first six Padres, he ran into trouble in the third. San Diego stole three bases in the inning -- two by Miguel Olivo and one by Dave Roberts, who leads the team with 21. Helling walked Mark Loretta to load the bases with two outs, and Brian Giles' grounder deflected off Overbay's glove at first base to make it 1-0.
The Padres got another run the next inning by stringing together three consecutive singles -- the third by Olivo that scored Nady from second to give the Padres a 2-0 lead. But the threat ended abruptly because Olivo got caught in a rundown trying to stretch his single and Eaton then struck out to end the inning.
- Brewers C Damian Miller missed the game with a stomach virus likely from food poisoning. Manager Ned Yost said Miller was "as white as a ghost." Chad Moeller took his place and went 1-for-3.
- The Brewers recalled P Wes Obermueller from Triple-A Nashville. Obermueller is replacing staff ace Ben Sheets in the rotation after Sheets tore a muscle in his back last week.
- Greene said he's still not 100 percent since coming off the disabled list. "At this point, it feels OK. It doesn't feel great, but it doesn't feel terrible either," he said.