ATLANTA -- Justin Upton knew his slump wouldn't last forever.
Upton and Kelly Johnson homered to back eight strong innings by Rodrigo Lopez and help the Arizona Diamondbacks snap a seven-game losing streak with an 11-1 victory over the Atlanta Braves on Saturday night.
"I'm doing nothing different," Upton said. "It's just one of those things. I'm actually seeing the ball pretty well."
Upton's sixth homer made it 1-0 in the first and his RBI triple in the fifth gave the Diamondbacks a 5-0 lead. The All-Star slugger is 6 for 10 in the series with four RBIs.
"I'm getting pitches to hit," said Upton, whose season average over the last two nights improved 26 points to .250. "They're finding holes."
The Braves had won four straight and were 9-4 since ending a nine-game skid on April 30.
Tommy Hanson (3-3) lost for the first time in four starts. He allowed seven hits and five runs with 10 strikeouts and no walks in seven innings.
"He was overpowering, I thought, most of the night," Braves manager Bobby Cox said. "We didn't get the hits. He had as good stuff as he's ever going to have."
Lopez (2-2) yielded one run and seven hits with two walks and five strikeouts. The right-hander was 0-2 with a 4.73 ERA in his previous six starts.
"I was able to make enough good pitches," Lopez said. "I made some adjustments and kept the ball down."
Facing Atlanta for the first time since losing 8-1 with Baltimore at Turner Field on June 26, 2005, Lopez improved to 1-3 with a 2.91 ERA in five career appearances, all starts, against the Braves.
Not since helping the Orioles beat the Angels on April 4, 2006, had Lopez pitched eight innings.
"I came today to do my job," he said. "We had pretty good teamwork."
The Diamondbacks scored four runs in the fifth on Chris Snyder's RBI single, Johnson's RBI double, an RBI single by Conor Jackson and Upton's triple.
Atlanta center fielder Nate McLouth lost Upton's fly ball in the lights in the fifth. As the ball sailed over his head, rookie right fielder Jason Heyward chased it down and threw it to the infield to prevent an inside-the-park homer.
"I saw him running this way, and the ball was going that way," Hanson said. "I thought, 'Uh-oh.'"
Nine of Arizona's runs came with two outs, including Stephen Drew's RBI infield single that made it 6-1 in the eighth against rookie Craig Kimbrel.
Johnson, who began the day tied with teammate Mark Reynolds for second place in the NL with 10 homers, hit his 11th to give the Diamondbacks a 7-1 lead in the ninth.
Drew's third homer, a two-run shot, and two other runs in the ninth were charged to Jesse Chavez.
"I was supposed to go out in the ninth, but we got all those runs and with that kind of lead, I didn't need to," Lopez said. "I didn't feel bad about it."
Martin Prado's RBI groundout in the seventh cut it to 5-1.
An effective start by Lopez allowed Diamondbacks manager A.J. Hinch to rest a bullpen that had a 12.94 ERA over its previous six games and recorded its ninth blown save in 16 chances Friday.
"That's what we needed," Upton said. "He did a great job today."
NOTES: Before the game, Atlanta activated SS Yunel Escobar (leg) from the 15-day disabled list and placed OF Matt Diaz (thumb) on the 15-day DL. ... The Diamondbacks are 17-11 against Atlanta and 10-6 at Turner Field since 2006.