Brendan Donovan hit a go-ahead two-run single in the eighth as the St. Louis Cardinals edged the visiting Chicago Cubs 7-6 on Saturday for their ninth victory in 11 games.
Lars Nootbaar went 3-for-5 with an RBI triple for St. Louis. Masyn Winn went 2-for-4 with an RBI to extend his hitting streak to 14 games.
Cardinals starting pitcher Miles Mikolas allowed three runs on four hits in six innings. He struck out six and walked two.
Reliever JoJo Romero (2-0) earned the victory, and Ryan Helsley notched his 16th save despite giving up two runs and four hits in the ninth.
Nico Hoerner smacked a two-run double for the Cubs, who lost for the eighth time in 11 games.
Cubs starter Jameson Taillon allowed three runs on nine hits in 5 2/3 innings. He struck out three and walked one.
Reliever Mark Leiter Jr. (1-2) allowed four eighth-inning runs to take the loss.
The Cardinals took a 2-0 lead in the third inning after Donovan hit a one-out single and raced to third on Nootbaar's hit-and-run single.
Nootbaar then stole second, and Paul Goldschmidt had a run-scoring groundout and Nolan Arenado hit an RBI single.
The Cubs moved ahead 3-2 in the fourth inning. Mike Tauchman hit a single, then, with two outs, Christopher Morel walked, Hoerner hit his two-run double and Michael Busch added an RBI single.
The Cardinals tied the game at 3-3 in the sixth. Nolan Gorman hit a single, stole second and scored on Winn's double.
Chicago regained the lead, 4-3, in the seventh. Busch reached on a one-out error, Dansby Swanson walked and Patrick Wisdom ripped a run-scoring double.
In the eighth, Alec Burleson and Gorman hit singles, and with two outs, Matt Carpenter had a pinch-hit RBI single, Donovan smacked his two-run single and Nootbaar roped his RBI triple to give St. Louis a 7-4 edge.
Tauchman and Cody Bellinger each plated a run with a single in the top of the ninth, but Chicago's rally came up short.