ST. LOUIS — The Chicago Cubs were looking for a catalyst to get them back on track and found what they needed in their battery.

Catcher Willson Contreras connected twice for his first career multihomer game, Eddie Butler threw six scoreless innings in his season debut and the Cubs beat St. Louis 3-2 Friday, ending the Cardinals' six-game winning streak.

The Cubs won for just the second time in seven games.

"It feels good coming in here and helping the guys win," Butler said. "Me and Willy had a big game plan going into it and we followed it pretty well. I ended up getting the guys a couple zeros there and they put up some runs."

Chicago played without NL MVP Kris Bryant, who was scratched from the lineup with a stomach virus. He's already been ruled out for Saturday's game.

Butler (1-0), who pitched the last three seasons with Colorado and was traded to the Cubs before spring training, gave up two hits. He struck out five and walked three.

Butler started in place of the injured Brett Anderson. The only two hits he allowed were infield singles by Aledmys Diaz, including a bunt.

"Eddie was really good wasn't he," Cubs manager Joe Maddon said. "He was really good. Probably walked more than what you see out of him but had really good stuff. I thought he was very, very good and it set the whole game up for us actually."

Wade Davis got his eighth save in as many tries.

Contreras homered twice off Mike Leake (4-2), who entered with the National League's best ERA and had only given up one home run in six starts.

"We just didn't barrel the ball up enough and we couldn't find enough holes," Leake said. "Games like that are going to happen."

Contreras, who had 12 home runs in 2016, hit solo homers in the second and fourth innings. He has four this year, three in St. Louis.

Tommy La Stella also homered for the Cubs. Once Bryant was scratched, Jon Jay got into the lineup, but he exited in the second inning with back spasms and La Stella entered.

Randal Grichuk homered in the St. Louis seventh off Carl Edwards Jr. The Cardinals had two runners on later in the inning, but Dexter Fowler got picked off at first on a snap throw by Contreras to end the threat.

For all of his offensive fireworks, it was his defence that Contreras was more pleased with after the game.

"(The offence) means a lot," he said. "But the pick off at first was bigger."

CROWD PLEASER: The Cubs-Cardinals rivalry typically draws well, and this game drew 47,601, the third-highest total for a regular season game at the new Busch Stadium.

TRAINER'S ROOM: Cubs: INF Addison Russell wasn't scheduled to play for the second consecutive game with a sore right shoulder but pinch hit in the eighth and drew a walk.

Cardinals: Fowler (shoulder) returned to the starting lineup after a six-game stretch during which he had two pitch-hit at bats.

UP NEXT

Cubs: LHP Jon Lester (1-1, 3.27) starts for Chicago.

Cardinals: RHP Carlos Martinez (2-3, 3.86) goes for his third consecutive win after beginning the year 0-3 with two no-decisions.