PHOENIX -- The Arizona Diamondbacks' offense has gone from pathetic to prolific in a hurry.
Paul Goldschmidt fell a single shy of the cycle, Justin Upton homered for the second time in three games, and the Diamondbacks climbed above .500 for the first time since May 4 by beating the Chicago Cubs 10-5 on Saturday night.
A week after they were shut out three times -- and scored just once in another game -- on the road, the Diamondbacks have won four of five at home, accumulating 46 runs in the process.
"Baseball's just crazy," Upton said. "We kept our positive outlook throughout the whole thing, even when we were being shut out. We put good at bats together, we just weren't getting it done. Now we're still putting together good at bats, and the balls are falling for us."
Goldschmidt tripled in a run in Arizona's six-run fourth inning against Paul Maholm (4-6), homered in the sixth, and had a leadoff double. He scored his third run of the night in the eighth. Upton started the scoring with a solo home run off Maholm and had an RBI single.
Asked what has happened to get the offense going, Arizona manager Kirk Gibson said "I'm not sure I have the answer for you."
"You just see better approaches, swings. They're hitting mistakes, for sure," he said. "We're driving the ball like we knew we could. It just took us a while to get going."
Maholm hit his second career home run, a two-run shot off Ian Kennedy, but fell to 0-4 in his last eight stars.
Craig Breslow (2-0) pitched 1 2/3 innings of scoreless relief to get the win. The Diamondbacks can complete a three-game sweep of the Cubs when they send rookie left-hander Wade Miley to the mound in search of his ninth win on Sunday.
Kennedy didn't benefit, though.
Despite being spotted a 7-2 lead, Kennedy got a no decision after failing to make it through the fifth inning.
"I was trying to get ahead of guys but my command was all over the place," Kennedy said. "My offspeed wasn't going for strikes and my fastball, either."
Kennedy managed to get only one out after Alfonso Soriano's leadoff single. Geovany Soto drew a one-out walk, then Steve Clevenger doubled both runners home. Kennedy was relieved by the lefty Breslow, who struck out Adrian Cardenas but gave up a pinch-hit RBI single to Jeff Baker to cut the lead to 7-5.
Kennedy, 0-2 in his last three starts, allowed five runs and 10 hits in 4 1/3 innings, striking out two, walking two and hitting a batter. Maholm, whose last win was May 9, went just 3 1/3 innings in his shortest outing of the season. He allowed seven runs, six earned, and nine hits. He didn't strike out a batter, walked three and a hit batter.
"Our core guys have to start doing something in the middle of that order," Cubs manager Dale Sveum said.
"He (LaHair) has struggled all year with people in scoring position," Sveum said. "It just keeps continuing. You have to change the approach or whatever is going on but you have to get better at that."
Arizona has won 11 of 16 overall and 9 of 10 at home. At 36-35, the Diamondbacks are above .500 for the first time since beating the Mets in New York to go 14-13 on May 4. After that, the Diamondbacks lost eight of nine.
Upton's home run, followed by Maholm's two-run homer, had Chicago ahead 2-1 in the fourth.
Then the Cubs helped the Diamondbacks get rolling in the bottom half of the inning.
With Arizona runners at first and third and one out, the third baseman Valbuena threw wide to first base after bobbling Hill's grounder as the tying run scored. Upton followed with an RBI single, and Jason Kubel doubled two home and scored on Goldschmidt's triple to the right field corner. Montero singled in Goldschmidt for the sixth run of the inning, ending the night for Maholm.
Miley (8-3, 2.30 ERA) will face the Cubs' Matt Garza (3-5, 4.07) on Sunday. Chicago is 3-15 against left-handed starters and is batting .220 against left-handed pitching. ... Arizona placed LHP Joe Saunders on the 15-day DL, retroactive to June 17, a move that could clear the way for the major league debut of top pitching prospect Trevor Bauer. Gibson confirmed that Bauer, the fifth overall pick in last year's draft, is a candidate to take Saunders' next start. ... Arizona's second-largest home crowd of the season (38,542) put the team over 1 million for the season in 36 games. The Diamondbacks needed 42 games to top 1 million last year. ... There were 22 runners were left on base, 12 by Arizona.