Starting pitcher Kyle Lohse carried a perfect game into the fifth inning, retiring the first 14 batters he faced, but left with one out in the seventh having allowed four hits, three of those solo home runs. His replacement, John Axford, was handed a 4-3 lead with runners at first and second base.
Axford, who ever since losing the closer's job early in the season had righted himself as a setup man, walked two and gave up a single, all of which helped the D-backs grab the lead. The Brewers (37-56) couldn't recover despite a 4-1 lead in the sixth.
"I think I was just trying to do a little too much," Axford said. "It's definitely a step back and it's not something you want to do. The biggest thing for me is I just didn't get the job done. I'm not trying to be theatrical ... that's just the way it is."
Axford had not allowed a run in 27 of his previous 28 appearances going into Saturday, and had not allowed an inherited runner to score until last Monday against Cincinnati. It was his 46th appearance of the season, second-most among Brewers relievers, and his first blown save since May 14 at Pittsburgh.
"He's pitched great for us. He's going to have one of these games once in a while," Brewers manager Ron Roenicke said. "He's pitched so well, and I've used him a lot."
Donovan Hand relieved Axford and got help from his defense, as Jeff Bianchi couldn't handle A.J. Pollock's hard ground ball to third but stayed with the play to throw out Martin Prado at home. The Brewers got out of the inning with another ground-ball out to Bianchi.
Lohse had been on track to win his third straight start, but all three seventh-inning runs were charged to him as he fell to 5-7. He did help himself at the plate, shooting a bouncer up the middle with two out that drove in the game's first run in the second inning.
"I had good stuff going, it's just that mistakes were made and hit out of the park, and after that I couldn't control," Lohse said. "You make mistakes and you pay for it. They're big league hitters. You fall behind and make the wrong pitch, they're going to hit it hard and sometimes it goes out."
Lohse has given up a home run in all three starts this month, though he won the first two.
"Those first few innings, great command. Did a great job mixing speeds, got the ball down well," Roenicke said. "Then all of a sudden he makes one mistake and a home run, he makes another mistake and a home run, it's tough. You hope they square up the ball and just get a base hit.
"When you don't give up many hits, you know you're pitching a good game."
"It got a little frustrating. Lohse was throwing a good game but then he started missing his spots a bit and we made him pay," D-backs manager Kirk Gibson said.
The Brewers plated three runs in the sixth to regain the lead, as Jean Segura led off with a single followed by Jonathan Lucroy's 13th home run of the season and fifth in his past seven games. Carlos Gomez walked and after reaching third on a double play, ran home on a passed ball.
Lucroy is batting .331 with 10 home runs and 35 RBIs over his last 42 games. Gomez finished the night 0-for-3, however, and the All-Star outfielder has one hit over his last eight games.
"Outstanding offense from him," Roenicke said of Lucroy. "It's just unfortunate things aren't going right."
Miguel Montero, Didi Gregorius and Jason Kubel hit solo home runs off Lohse. Kubel's shot started Arizona's pivotal three-run seventh.
Segura reached base to lead off the eighth inning but the next three hitters were retired, and Arizona's Brad Ziegler retired the side in order in the ninth.
The Brewers will try to avoid a four-game sweep Sunday at 3:10 p.m. CT when Wily Peralta (6-9) makes his 20th start of the season coming off a three-hit shutout of the Reds his last time out.