Edwin Jackson earned his third straight win, combining with four relievers on a four-hitter, and Anthony Rizzo drove in all the runs to lead the Cubs to a 3-0 victory over the St. Louis Cardinals on Thursday night.
St. Louis had the tying run at the plate in the ninth inning after Kevin Gregg dropped a throw covering first on Allen Craig's grounder, and David Freese walked.
Alfonso Soriano made a shoestring catch on Jon Jay's liner to end the game. Cardinals manager Mike Matheny was then seen arguing vehemently with plate umpire Dan Bellino and appeared to make contact with him.
The Cubs escaped with the win, and Gregg got his 16th save in 18 chances.
St. Louis' five-game winning streak ended.
Jackson (6-10) struck out five without a walk in seven innings. Starlin Castro added three singles and scored two runs for the Cubs, who won for the fifth time in six games.
The Cardinals lost Matt Holliday to tightness in his right hamstring when he ran out a grounder in the fourth inning.
Rizzo delivered an RBI double in the first inning after Castro singled with one out and made it 3-0 in the third off Jake Westbrook (5-4), poking a two-run single to left past a drawn-in infield.
That was enough for Jackson, who didn't give up either a run or a walk for the first time this season. He also matched his longest outing of the year and improved to 5-2 in his last seven starts after opening 1-8.
The Cubs also made some crisp plays behind him, including Brian Bogusevic's leaping catch against the center-field wall to rob Matt Adams of an extra-base hit leading off the seventh.
The Cardinals had runners on first and second in the eighth after Blake Parker gave up a leadoff single to Jay and walked pinch-hitter Daniel Descalso with one out. James Russell then retired Matt Carpenter on a liner to center, and Pedro Strop threw a wild pitch to put runners on second and third, Carlos Beltran struck out swinging to end the threat.
It was just what the Cubs were looking for one night after matching a season-high for runs allowed and setting one by giving up five homers in a 13-2 loss to the Los Angeles Angels.
Westbrook went seven innings, allowing three runs and seven hits. But it was a tough night for the NL Central leaders, particularly with Holliday leaving the game.
He came up clutching his hamstring halfway to first base on a grounder to short in the fourth. He walked off gingerly after being tended to by a trainer and didn't go out to left field in the bottom half.
NOTES: Beltran played in his 2,000th game. ... The Cubs' Scott Baker threw a bullpen session at Wrigley Field on Thursday and will begin a minor league rehab stint with Class A Kane County on Sunday. The right-hander signed a one-year deal with the Cubs after undergoing Tommy John surgery and sitting out last season with Minnesota, then had a setback in spring training. Chicago manager Dale Sveum said he will make at least four rehab starts before joining the Cubs. ... RHP Joe Kelly (0-3, 4.15 ERA) starts Friday for the Cardinals, with RHP Carlos Villanueva (2-4, 3.63) going for the Cubs.