PHOENIX -- Chicago Cubs manager Mike Quade admittedly was wrong Saturday night. His timing was right, though.
"He knows what he's doing," Barney said of his manager. "He can get us riled up any time he wants. It was a good time for it."
Quade got heated after a close call on the bases. With Marlon Byrd on first, Soto bunted back to reliever J.J. Putz (0-1), who threw off-target to second. Shortstop Stephen Drew made a dive to his right to catch the ball, barely keeping a toe on the bag to force Byrd.
Quade argued with second-base umpire Dan Bellino and was ejected. Quade then retreated to the Cubs' clubhouse and saw the replay.
"Let's start with that," Quade said. "I'm very angry. And I'm very wrong. Dan got it right. I was mad at everything and couldn't believe Drew kept his foot on the bag."
After Quade departed and Tyler Colvin walked, Kosuke Fukudome grounded back to the mound. Putz threw to Drew for the second out of the inning but the shortstop double-clutched the throw to first baseman Russell Branyan and Fukudome was safe while Soto advanced to third.
"Stephen did everything he could and Russell had a good stretch but he just beat it," Putz said. "It was just me not making a good pitch with two strikes on a guy, getting ahead but just not being able to finish."
Barney followed with a sharp single off the mound to give Chicago a 4-3 lead. Starlin Castro then singled to make it a two-run game.
"Everyone's battling," Barney said. "This team doesn't give up. We're just trying to enjoy it, thrive on it and keep winning."
Alfonso Soriano hit his 10th home run, tying him with Ryan Braun for the NL lead, and Matt Garza threw eight solid innings for the Cubs, who have won two straight after being routed 11-2 by the Diamondbacks on Thursday.
"Whoever coined the phrase pitching is 90 percent of the game either was really smart or was stating the obvious," Quade said. "It's about setting the tone and keeping your club in the game. We feel like we have the guys in place in the rotation."
Garza (1-3) scattered three runs on six hits with 10 strikeouts and two walks over a season-best eight innings for his first win with the Cubs.
"I don't have to win every game as long as we win every game I throw," Garza said.
Carlos Marmol pitched a hitless ninth for his seventh save.
"The big play was the double play," Arizona manager Kirk Gibson said. "We had an opportunity to end it there."
Justin Upton gave the Diamondbacks a 1-0 lead in the first, doubling to left and scoring on Drew's line single up the middle. Soriano's second-inning home run, his third in two games, bounced off the bottom of the mammoth scoreboard over the center-field batters' eye and tied the game at 1-1.
Soriano added a two-out RBI single in the fourth following Castro's leadoff double, and Aramis Ramirez doubled home Barney in the fifth to put the Cubs ahead 3-1.
Despite hitting .258 in the season's first month, Soriano has 20 RBIs.
Diamondbacks starter Ian Kennedy allowed three runs on six hits over 7 2/3 innings with a walk and six strikeouts.
Cubs 1B Jeff Baker left the game in the top of the eighth with left shoulder soreness after jogging into second on a two-base error. ... Soriano extended his own Cubs single-season record for home runs in April. ... Cubs 1B Carlos Pena was held out of the starting lineup for the second straight game. Pena is hitting .159 with no home runs and only five RBIs in 22 games. He entered the game after Baker's injury. ... The Diamondbacks sent C John Hester to Baltimore earlier Saturday to complete the December trade that sent 3B Mark Reynolds to the Orioles for RHP David Hernandez and RHP Kam Mickolio. Hester was batting .263 with a home run and five RBIs in 10 games for Triple-A Reno.