Cardinals rookie Stephen Piscotty continues to show a penchant for making quick adjustments.

After going hitless in his first three at-bats, Piscotty lined a two-run double off the centerfield wall to cap a three-run rally in the eighth inning that sent St. Louis over the Chicago Cubs 4-3 Wednesday.

Matt Carpenter tripled and scored twice as the Cardinals' ended their three-game losing streak. The NL Central leaders avoided their first sweep at home this season and their first against the Cubs since September 2010.

''It's definitely good to get that one,'' Piscotty said. ''You don't want to get swept by the Cubs. We're fine. There's no panic. We did a good job of fighting back.''

Cardinals manager Mike Matheny said Piscotty is a good self-evaluator.

''This is what he did: `He got me last time, this is what I probably need to do.' And not many guys can make those adjustments as far as approach,'' Matheny said. ''He's able to think ahead and then make those physical adjustments as well.''

Cubs lefty Jon Lester exited after seven dominant innings. He gave up two hits, retired 20 of his final 21 hitters and left with a 3-1 lead.

''I felt good, cutter was better today,'' Lester said. ''I got away with a couple of pitches because of what we established early.''

Jonathan Broxton (2-4) got the win and Trevor Rosenthal picked up his 43rd save. Clayton Richard (3-1) took the loss.

Cardinals starter Carlos Martinez needed 99 pitches to get through five innings. The Cubs stranded at least one runner in each of his innings, and Martinez was able to limit the damage with eight strikeouts.

''All in all, I think he did a nice job of keeping it together all the way around,'' Matheny said. ''His mind was right. He kept coming out and grinding and that's a great sign of what could come.''

The Cardinals' bullpen retired 12 of the 13 batters they faced.

''Carlos gave us five,'' Broxton said. ''He struggled early, but once the bullpen opened up we just tried to hold them there and give our offense a chance.''

Chris Coghlan took advantage of Randal Grichuk's compromised throwing arm to score the Cubs' first run on Anthony Rizzo's double.

Grichuk, starting for the first time since straining his elbow Aug. 16, had to flip the ball to right fielder Jason Heyward, who threw it in allowing Coghlan to score from first.

Rizzo appeared to be caught in a run-down following his double, but Martinez failed to cover third, allowing Rizzo to take an extra base. Tommy La Stella followed with a two-out double to give the Cubs an extra run.

Lester got his second career hit, both against St. Louis. The Cardinals have given up hits to opposing pitchers in four consecutive games and each have led to runs.

More From KHMO-AM 1070, News-Talk-Sports