Dexter Fowler hit a three-run homer and Adam Wainwright tossed five solid innings, leading St. Louis to a 6-5 win over the Philadelphia Phillies on Sunday.
The Cardinals have won three in a row since a season-high seven-game losing streak.
Daniel Nava homered for the Phillies, who have dropped five in a row.
Philadelphia led 2-0 before Fowler connected against Aaron Nola (3-4) in the fifth inning. Eight of Fowler's nine homers in his first season with St. Louis have given his team the lead.
Tommy Pham had two hits, scored twice and drove in a run for St. Louis.
Wainwright (7-4) gave up six hits, struck out four and walked two, bouncing back nicely from a rough start at Cincinnati on Tuesday. Seung Hwan Oh pitched a rocky ninth inning for his 15th save.
Wainwright needed 50 pitches to get through the first two innings, but allowed just one hit over his final three frames.
Pham and Eric Fryer added run-scoring singles in the sixth, and Kolten Wong's RBI double made it 6-3 Cardinals in the eighth. Wong's hit took on added importance when Oh faltered in the ninth.
Philadelphia pulled within one on RBI singles by Odubel Herrera and Howie Kendrick. Oh then got Tommy Joseph to fly to right with two runners on, ending the game.
Herrera went 3 for 5 with two RBIs, extending his hitting streak to 10 games.
Lance Lynn (4-3, 2.88 ERA) will pitch on Tuesday afternoon against Milwaukee in the first game of a day-night doubleheader. LHP Marco Gonzales will make his season debut for St. Louis in the nightcap.
>>Cubs Top Rockies
Addison Russell had a go-ahead home run for his first big contribution since an absence in the wake of a Major League Baseball investigation into domestic abuse allegations, and the Chicago Cubs stopped the Colorado Rockies' seven-game winning streak, 7-5 Sunday.
Russell and Kyle Schwarber had back-to-back home runs in the sixth inning. Miguel Montero and Ben Zobrist also connected, helping the Cubs even get to 31-31.
This was Russell's second game since missing the first two games of the series. The MLB investigation began after claims of abuse against his wife were levied in a since-deleted social media post.
Reliever Jordan Lyles (0-2) gave up both homers in the sixth. The NL West-leading Rockies ended their longest winning string since 2013.
Carl Edwards Jr. (2-0) won in relief of starter Jake Arrieta. Wade Davis gave up a run in the ninth before getting his 13th save in 13 chances as the Cubs snapped a four-game losing streak.
Colorado rookie Antonio Senzatela labored through four innings, striking out six. He allowed four runs before getting an out in the first as Anthony Rizzo had an RBI double on a 10-pitch at-bat and Zobrist hit a three-run homer.
The Rockies responded with four runs in the fifth inning, all charged to Arrieta.
DJ LeMahieu walked with the bases loaded and, after Carlos Gonzalez was ejected arguing a called third strike, Mark Reynolds lined an RBI single to make it 4-2.
Edwards relieved and allowed a tying, two-run single by Ian Desmond.
Montero homered in the eighth. LeMahieu added an RBI single in the ninth before Davis got Alexi Amarista to pop out to end it. Amarista replaced Gonzalez after the ejection by umpire Marvin Hudson.
John Lackey (4-6, 5.12) has lost three straight starts and begins a three-game series and six-game road trip Monday against the New York Mets. The Cubs play 17 of their next 20 games on the road.
>>Sox Doubled Up By Tribe
Andrew Miller, Bryan Shaw and Cody Allen combined for 3 2/3 innings of one-hit relief, helping the Indians top the Chicago White Sox 4-2 on Sunday.
Carlos Carrasco (6-3) was pulled after Todd Frazier's two-run double cut Cleveland's lead to one. The right-hander allowed seven hits, struck out four and walked one in 5 1/3 innings.
Miller retired all five batters he faced, striking out three. Shaw pitched a scoreless eighth and Allen finished for his 15th save, working around a one-out single.
Carrasco struck out Melky Cabrera to begin the sixth but then hit Jose Abreu on the left elbow. The big first baseman, who was hit on the left knee by Miller on Friday, crouched over at the plate and slowly walked to first.
Avisail Garcia's double put runners at second and third before Frazier's double made it 3-2. Miller struck out Yolmer Sanchez and Tim Anderson and retired the side in order in the seventh.
Francisco Lindor, Roberto Perez and Erik Gonzalez each drove in a run for Cleveland.
The White Sox have dropped nine of 11. Jose Quintana (2-8) allowed three runs in five innings, dropping to 0-4 in his last seven starts.
Mike Pelfrey will go in the opener of a four-game series against Baltimore on Monday.