DENVER -- Jeff Samardzija pitched effectively into the eighth inning and Anthony Rizzo doubled home the go-ahead run in the seventh, leading the Cubs past the Colorado Rockies 3-1 Friday night.
Alfonso Soriano added a home run, his 17th, and Junior Lake, recalled by Chicago from Triple-A Iowa before the game, had three hits in his major league debut, including a double in his first career at-bat. Darwin Barney drove in an insurance run with a ninth-inning double.
Samardzija (6-9) kept the Rockies in check by limiting them to one run on four hits in 7 1-3 innings, bouncing back after tying a career high by allowing nine runs in a 13-2 loss to the Los Angeles Angels on July 10.
He walked three and struck out six, including striking out the side in the seventh, when he set down All-Stars Carlos Gonzalez, Troy Tulowitzki and Michael Cuddyer.
D.J. LeMahieu doubled off Kevin Gregg to start the ninth and advanced to third on a ground out by Gonzalez. Tulowitzki walked before Gregg induced Cuddyer to ground into a game-ending double play for his 18th save in 20 chances.
Chicago regained the lead in the seventh, sparked by Cody Ransom's two-out walk off reliever Edgmer Escalona (1-3). Rizzo followed by lining a double down the right field line. He was thrown out trying for third but not before Ransom had crossed the plate with the go-ahead run.
Soriano gave the Cubs a 1-0 lead when he homered to start the fourth inning, driving Jorge De La Rosa's 0-1 pitch into the stand of evergreens beyond the center field wall. It was his 389th homer, tying him with Hall of Famer Johnny Bench for 57th on the career list.
Dexter Fowler evened the score when he led off the Rockies' half of the fourth with a homer, his 11th. He drove Samardzija's first offering beyond the center field wall in almost the same spot as Soriano's.
The Rockies had a chance to go in front after Tulowitzki and Cuddyer hit consecutive two-out singles. With Todd Helton up, a low pitch skipped past Welington Castillo, but the ball bounced off the backstop and the catcher corralled it, making an off-balance throw to Samardzija covering at home just in time to tag out Tulowitzki, who had broken for the plate.
De La Rosa went six innings and allowed one run on five hits.