ST. LOUIS -- Khris Davis could have easily just called it a day after striking out four times.

Instead, the Milwaukee Brewers outfielder got one more chance -- and came through.

Davis hit a run-scoring triple in the 12th inning to lead the Milwaukee Brewers to a 5-3 win over the St. Louis Cardinals on Monday night.

"It was tough," Davis said, "but there was no doubt I still wanted to be in that situation."

Davis drove in Jonathan Lucroy, who doubled off Seth Maness (0-2) to start the inning. Mark Reynolds then drove in Davis with a sacrifice fly. Davis, who finished 1-for-6, struck out in the second, fifth, sixth and 10th innings.

"It's hard to find the positive, after a tough start in the game," Davis said. "But you know it's there. You just have to look hard to find it."

Davis found it by ripping a two-strike pitch down the right-field line.

Zach Duke (2-0) picked up the win with two innings of scoreless relief, and Francisco Rodriguez recorded his 12th save in as many opportunities by getting Jhonny Peralta to fly out with two on to end the game.

Davis impressed his teammates with his ability to bounce back. He admitted that he, "looked real bad," in several of his early at-bats.

"I know what it's like, I've been there," Reynolds said. "It says a lot for a young guy to bounce back like that. His confidence in that situation was something else."

Milwaukee manager Ron Roenicke agreed: "What he did, it's got to pump you up."

Milwaukee, which leads the majors with 19 wins, has won four of five and eight of 10 overall. The Brewers also improved to 10-1 on the road, despite being without outfielder Ryan Braun (oblique strain) and shortstop Jean Segura (bruised cheek). Both were listed as day-to-day.

Allen Craig and Matt Holliday hit solo homers in the sixth inning off Brewers starter Yovani Gallardo to give St. Louis a 3-0 lead.

Holliday, who leads the team with 16 RBIs, also drove in Matt Carpenter with a first-inning single for St. Louis, which has lost four of six.

The Brewers lost 14 of 19 to St. Louis last season and dropped three of the first four before Monday's victory.

"This win was huge," Roenicke said. "We got some big hits and we hung in there and battled."

Reynolds was very pleased with the way the club rallied from a 3-0 deficit.

"It's the sign of a good team to come back and win a game that maybe you weren't supposed to win," he said. "Big for the team, big for our confidence."

St. Louis starter Michael Wacha gave up three runs and eight hits over 6⅓ innings. He struck out nine.

Gallardo, who is 1-11 lifetime against St. Louis, gave up three runs and seven hits over six innings.

Milwaukee tied the game with three runs in the seventh. After Lyle Overbay and Scooter Gennett had RBI singles, Aramis Ramirez was hit by a pitch from reliever Pat Neshek with the bases loaded and two outs. Ramirez left the game in the bottom of the inning with an elbow contusion. He, like Braun and Segura, is listed as day-to-day.

Wacha, who has 19 strikeouts in his past two starts, cruised through the five innings. He did not allow a runner to reach second until the sixth.

"I felt good with all of my pitches and command," Wacha said. "I just let it get away from me a little in the seventh."

St. Louis manager Mike Matheny was disappointed that his team gave up a comfortable lead.

"Not very often do we get a three-run lead and not be able to hang onto it," he said. "It's as tough a one as we've had all year."

Game notes

Former Cardinals catcher Tim McCarver, a national commentator for Fox Sports for the past 18 years, made his debut on the Cardinals broadcast Monday. McCarver is doing color on 30 games for Fox Sports Midwest this season. ... Lance Lynn (4-1, 3.80) will face Kyle Lohse (4-1, 2.38) in the middle game of the three-game set Tuesday. ... St. Louis lost a replay challenge in the sixth inning. Gallardo was ruled safe on an infield single. The ruling on the field was confirmed in 1 minute, 52 seconds. ... Braun was in the on-deck circle when Elian Herrera struck out to end the 10th.