MILWAUKEE -- The Milwaukee Brewers kept waiting, patiently hoping Khris Davis would get in the swing.

No more wondering when that'll happen.

Davis hit two more homers, including a two-run shot in the eighth inning off recent teammate Jonathan Broxton, and the Brewers beat St. Louis 5-4 Sunday and ended the Cardinals' four-game winning streak.

More from FoxSports

It was his Davis' fourth home run in four games.

"That's who he is," Milwaukee manager Craig Counsell said of Davis' streaky tendency in his three-year career. "He's trying to lengthen those good streaks and shorten the bad streaks. When he gets into these good streaks, he can win games for you."

Broxton (1-3), traded from Milwaukee to the NL Central leaders on July 31, relieved Kevin Siegrist with a runner on second and one out with a 4-3 lead. Davis hit the first pitch into the Cardinals' bullpen for his 11th homer.

"It fell just right there," Davis said. "It was a good pitch to hit and I was ready."

Will Smith (5-2) pitched a scoreless eighth. Francisco Rodriguez worked the ninth for his 26th save in 26 chances this year.

Davis earlier hit a two-run homer off Cardinals starter John Lackey.

Last Thursday, Davis hit a pair of three-run homers in Milwaukee's 10-1 win over San Diego. He had been held hitless in six at-bats during the first two games of this series, a pair of shutouts for the Cardinals, before breaking loose.

"Khris hasn't had that streak yet that we're talking about it," Counsell said. "We'll assume this is it. Four homers in four games. Two, two-home run games. That's it. When you're that type of hitter you're kind of waiting for it. You work hard and try to get there."

Elian Herrera's home run in the third ended the Cardinals' streak of not allowing a run at 38 innings. It also was the first home run allowed by St. Louis pitchers in 62 innings.

Matt Carpenter hit a three-run homer off Brewers starter Jimmy Nelson with two outs in the seventh for a 4-3 lead.

Pinch-hitter Jason Rogers opened the Milwaukee eighth with a single off Siegrist. Shane Peterson's sacrifice bunt moved him to second, and Broxton took over.

"(When) the roof's open and the panels are open the ball flies here," Broxton said. "You really got to focus on getting the ball down. I didn't get that first pitch down. It's away, but it's just up."

Lackey gave up six hits, including a solo homer by Herrera and the drive by Davis, in six innings.

"It's a shame, that one bad inning," St. Louis manager Mike Matheny said. "A walk, a homer, he gave up next to nothing all day today. Sixty-six pitches. We didn't have a lot of offensive opportunities. That's tough. Throwing the ball that well and didn't get a lot of offensive support early."

Herrera's home run with one out in the third came one pitch after Jean Segura was caught stealing second base, a play that was confirmed after a challenge by the Brewers.

Jason Heyward hit an RBI single in the sixth for the Cardinals. Nelson allowed four runs on eight hits while striking out eight in seven innings.

Brandon Moss and Stephen Piscotty opened the St. Louis seventh with singles, and Tony Cruz's sacrificed. Pinch-hitter Mark Reynolds grounded out but, after a brief conference at the mound, Nelson stayed in the game and Carpenter hit his 16th home run.

RARE WALK

Brewers shortstop Jean Segura walked in the seventh inning, his first bases on balls in 120 plate appearances dating to July 3.

TRAINER'S ROOM

Cardinals: C Yadier Molina was given the day off to rest and Cruz started in his place. Manager Mike Matheny said he made the move because with the off-day on Monday his starting catcher would get two days off.

Brewers: RHP Brandon Kintzler has allowed only one hit and no runs in two innings while on a rehab assignment for the Arizona League Brewers in the Rookie League. Kintzler is on the disabled list with knee tendinitis.

UP NEXT

Cardinals: The team returns home Tuesday to open a three-game series with their closest NL Central competitor, the Pittsburgh Pirates. The teams have split 10 games this year.

Brewers: Open a three-game series at the Chicago Cubs on Tuesday. It is the only three road games in a 20-game span for the team. The Brewers are 4-7 in the first 11 games of this stretch.