Billy Buckner held the Padres to two runs -- one earned -- on nine hits and one walk over six-plus innings. He struck out eight. Clay Zavada (3-3) picked up the win with a scoreless ninth. Juan Gutierrez got his fourth save of the year.
Adam Russell (2-1) was cuffed with the loss after giving up consecutive one-out singles to Gerardo Parra, Ryan Roberts and then Allen.
Buckner also drove in two runs for the Diamondbacks, who had lost nine of 10 going into the game.
Pinch-hitter Alex Romero added an insurance run with an RBI groundout.
San Diego starter Kevin Correia gave up two runs in 6 1/3 innings with seven strikeouts but got a no-decision.
Chase Headley drove in the Padres' runs.
Exploding whale video goes viral on Internet
'SNL': 'Anchorman 2' cast, One Direction sing 'Afternoon Delight' [VIDEO]