Nate Schierholtz drove in five runs, including the go-ahead RBI double in the 12th inning to power the Chicago Cubs to a 7-6 win over the Arizona Diamondbacks.
Anthony Rizzo knocked in a run and scored three times. Junior Lake had the other RBI for the Cubs, who have taken two of the first three contests of this four-game series.
Paul Goldschmidt stroked a three-run homer for Arizona, which forced extra innings by tying it in the ninth thanks to a sacrifice fly from pinch-hitter Cody Ross.
Arizona went 1-for-15 with men in scoring position and left 16 runners on base.
"We have nobody to blame but ourselves," Arizona manager Kirk Gibson said.
Martin Prado grounded into a force play to leave the bases full in the bottom of the 10th. Arizona left two men on base in the 11th.
David Hernandez (4-6) walked Rizzo with two outs in the 12th, and he scored on Schierholtz's double to left field.
Hector Rondon (2-0) pitched the final two innings to get the win.
"Anytime you play extra innings like that and they come back, it's always good to pull it off," Schierholtz said.
Arizona, which fell 1 1/2 games behind the Dodgers in the NL West, lost for the fifth time in seven games.
Cubs starter Jeff Samardzija pitched the first 5 2/3 innings, while Ian Kennedy threw the first five for the Diamondbacks.
David DeJesus, who was activated from the 15-day disabled list prior to the game, doubled to start the fourth inning. Following a sacrifice bunt from Lake, Rizzo doubled to the gap in left-center and he scored on Schierholtz's base hit to left.
Kennedy grounded with the bases full to end the bottom of the fourth, and the Cubs padded their lead to 6-0 in the fifth. All of the runs came with two outs. Lake hit the gap in left-center to drive in DeJesus. After Rizzo walked, Schierholtz belted a homer just inside the foul pole in right.
The Diamondbacks took advantage of an error on second baseman Darwin Barney to score their first two runs in the fifth. With the bases full, Prado hit a grounder up the middle, but the ball went between Barney's legs into center field to score Adam Eaton and Gerardo Parra. Samardzija escaped further trouble by retiring Jason Kubel and Wil Nieves to cap the frame.
Consecutive singles from A.J. Pollock and Parra in the sixth spelled the end for Samardzija. Blake Parker came in from the bullpen, but Goldschmidt drove a 1-1 pitch over the wall in left to get the Diamondbacks within a run.
Arizona had Prado at second base in the seventh, but James Russell stopped a potential rally by getting Didi Gregorius to fly out to left field to end the frame.
Pedro Strop retired the Diamondbacks in order in the eighth, but Kevin Gregg gave up the tying run in the ninth when Ross lifted a sac fly to plate Goldschmidt, who walked in front of Eric Chavez's single to right.
After Nieves' infield hit, Gregorius grounded out to send the game into the 10th inning. It was the 20th blown save for the Cubs this year.
The Cubs gained their 23rd road win of the year, matching the victory total they had for all of last year in away games ... The Cubs made room for DeJesus by optioning outfielder Dave Sappelt to Triple-A Iowa.