St. Louis has posted back-to-back victories for the first time in nearly a month. Before a Sunday win at Detroit, the Cardinals had lost eight consecutive games. Chicago lost for the eighth time in 11 games.
Greeted with noticeable cheers but several boos, Contreras went 2-for-4 against the Cubs, the team he left to sign a five-year, $87.5 million deal with the rival Cardinals in the offseason.
St. Louis reliever Genesis Cabrera (1-1) threw 1 1/3 shutout innings for the win, and Ryan Helsley recorded the last four outs for his fourth save. Cubs starter Marcus Stroman (2-3) yielded two runs on four hits in six innings.
Keller (4-1) produced a four-hit shutout in his first career complete game. He struck out eight and walked one.
Colorado starter Kyle Freeland (3-4) gave up two runs and seven hits in seven innings, with four strikeouts and three walks. The Rockies had won two in a row and six of their past seven.
Peralta (4-2) allowed three hits, all doubles, while striking out five and walking two. Wiemer knocked in four runs, and Christian Yelich added a two-run single.
Dodgers starter Tony Gonsolin (0-1) allowed three unearned runs on three hits in six innings. Chris Taylor connected for a pinch-hit, two-run homer in the ninth.
Eric Haase had three hits and scored two runs and Riley Greene added two hits and two RBIs for the Tigers, who have won six of seven. Tigers starter Joey Wentz (1-3) allowed two runs and three hits in 5 2/3 innings.
Guardians starter Tanner Bibee (1-1) gave up four runs and seven hits in 3 2/3 innings. Jose Ramirez homered for Cleveland, which had won two in a row.
McClanahan (7-0) allowed just four hits and four walks while striking out seven as the Rays won for the ninth time in 11 games. Wander Franco went 2-for-3, while Raley went 2-for-4 with his solo homer in the ninth inning to cap the scoring.
The Orioles, who have dropped their past three games, wasted a quality start by Kyle Gibson (4-2). He allowed just two runs on six hits in six-plus innings.
Oswaldo Cabrera and Aaron Hicks also belted two-run homers for the Yankees. New York starter Nestor Cortes allowed two runs and six hits in five-plus innings, and Ron Marinaccio (2-1) got the win in relief.
Athletics starter JP Sears (0-3) yielded five runs on six hits in 5 1/3 innings.
The Royals were buoyed by an eight-run sixth, breaking a 4-4 tie by sending 12 batters to the plate. Kansas City loaded the bases with no outs, chasing White Sox starter Dylan Cease (2-2) from the game.
Cease went five-plus innings, allowing seven runs on nine hits while walking one and striking out six. Jose Cuas (2-0) got the win in relief of Zack Greinke, who allowed four runs (three earned) on six hits in 5 2/3 innings.
Gray (2-1) allowed one run on four hits and no walks with eight strikeouts. The only run Gray allowed was a solo homer by Ty France in the first inning. Will Smith struck out the side in the ninth for his fifth save.
Gilbert (1-2) had a perfect game through six innings, but in the seventh, Josh Jung hit a sacrifice fly to tie the score and Jonah Heim added a go-ahead single. Gilbert gave up two runs on three hits and one walk in 6 2/3 innings. He finished with 10 strikeouts.
Gabriel Moreno went 3-for-4 with one RBI as the Diamondbacks won for the seventh time in 10 games. Walker's tape-measure homer in the sixth inning put Arizona ahead to stay and helped send the Marlins to their sixth setback in seven games.
Gallen (5-1) gave up one run and five hits while winning his fifth straight decision. Miami's Braxton Garrett (1-2) was charged with four runs and seven hits over 5 1/3 innings.
Washington right-hander Jake Irvin pitched 6 1/3 scoreless innings to earn his first major league win. He allowed four hits and three walks while striking out five.
Joc Pederson's solo home run in the ninth provided the Giants' lone run. San Francisco starter Anthony DeSclafani (3-2) got through seven innings, allowing five runs on 10 hits.
With the score 4-4 in the eighth, Anthony Rendon drew a leadoff walk off Rafael Montero (0-2). After Hunter Renfroe flied out, Drury blasted a first-pitch sinker to deep centre, and the ball caromed off the wall and gave Rendon ample time to advance home from first base.
Los Angeles tacked on another run when Matt Thaiss' deep sacrifice fly scored Drury, giving Carlos Estevez a cushion to pick up his eighth save of the season. Hunter Brown pitched 4 1/3 innings for Houston, allowing four runs on nine hits.