CHICAGO -- Cubs right-hander Edwin Jackson never lost confidence even in the darkest moments when his record fell to 1-8 early in June.
His persistence was rewarded again on Thursday. Jackson turned in seven shutout innings as the Chicago Cubs topped the St. Louis Cardinals 3-0 in the opener of a four-game weekend series at Wrigley Field.
"It's a game of grinding it out," said Jackson (6-10), who tied a season high with seven innings of work and his first scoreless appearance of the season. He allowed three hits while striking out five and walking none.
"As long as you believe and have the confidence that you can turn things around, that's all that matters," he said.
Anthony Rizzo went 2-for-3 and delivered all the runs Jackson needed, while Starlin Castro went 3-for-4 and scored twice.
But the effort of Jackson -- who won his third straight -- plus a revamped bullpen made the difference as the Cubs improved to 10-5 since June 26.
"Tonight he was really sharp against the best offense in baseball," said Cubs manager Dale Sveum. "It's a 32-start season, and you let things go and obviously things have been coming together a lot better for him the last four to five starts."
St. Louis right-hander Jake Westbrook (5-4) also worked seven innings, allowing three earned runs on seven hits and four walks while striking out two. It was his sixth start since coming off the disabled list in mid-June after missing 33 games with an inflamed right elbow.
"I wasn't as sharp as I have been," Westbrook said. "I struggled to get back in the zone and make some good pitches. That third inning was kind of weird ... then we settled down and put up some zeros after that."
Cardinals first baseman Matt Adams sought to break Jackson's shutout in the seventh, sending a long drive to deep center to lead off the inning.
Center fielder Brian Bogusevic made the catch at the wall, but misjudged a ball hit by the next batter as Allen Craig doubled to the same spot. Craig reached third after Yadier Molina grounded to third, but Jackson got David Freese to strike out swinging to end the inning.
Right-hander Blake Parker entered in relief to start the eighth but put runners on first and second and departed with one out for left-hander James Russell, who got Matt Carpenter to line out to center.
Right-hander Pedro Strop then came in, threw a wild pitch to advance runners to second and third but got Carlos Beltran to strike out swinging on a 2-2 pitch to escape unscathed.
Cubs closer Kevin Gregg put two runners on in the ninth and had the potential tying run at the plate. But he got Jon Jay to fly to left to wrap up Chicago's first shutout victory since beating the White Sox 7-0 on May 27. It was Gregg's 16th save of the year.
Chicago jumped on Westbrook for a first-inning run after Castro singled with one out and Rizzo brought him home with a double to the ivy in right-center field.
Rizzo drove in two more in the third for a 3-0 Cubs lead. With Luis Valbuena on third and Castro perched at second with none out, Rizzo singled to knock in both runners.
Cardinals left fielder Matt Holliday left the game in the fourth inning with right hamstring tightness after grounding out to short.
"I've been icing in and getting treatment and I'll get a better feel of what it looks like tomorrow," he said. "Hopefully it will be day-to-day."
St. Louis had only one runner in scoring position in the early going. Freese doubled to deep left-center with two out in the first but failed to advance.
The game was the seventh of 19 the teams will play this season.
The Cardinals send right-hander Joe Kelly (0-3) against the Cubs' Carlos Villanueva (2-4) in Friday's game.
NOTES: The Cubs recalled RHP Michael Bowden from Triple-A Iowa on Thursday and sent LHP Brooks Raley to the Iowa affiliate. Bowden, a member of the Cubs' Opening Day roster, was sent down on May 21 to make room for Matt Garza, coming off the disabled list. Raley made his 2013 Cubs debut on Wednesday and allowed two runs in 4 1/3 innings of relief against the Angels. ... Alfonso Soriano has clubbed eight home runs in his last 12 games and is now seventh all-time among active players with 387. ... The Cardinals recalled RHP Carlos Martinez from Triple-A Memphis for the second time this season. He made seven relief appearances in May and was 0-0 with a 4.50 ERA. ... All-Star OF Beltran appeared in his 2,000th major league game, 10th among active players. ... The Cardinals will have played 93 games by Sunday, the most going into the All-Star break since 96 in 2008.