PITTSBURGH (AP) -- Pittsburgh pulled off a rare triple play in the field and Jordy Mercer broke out of a deep batting slump with a two-run double that lifted the Pirates to a 7-5 win against majors-leading St. Louis on Saturday.
The Cardinals retained a 6-1/2 game lead in the National League Central despite the defeat while in the American League Central, Kansas City moved back above Detroit to the top of the standings.
The AL-leading Houston Astros edged the Los Angeles Angels, while Baltimore halted a four-game slide with a win against the New York Yankees.
Pittsburgh's Mercer, who began the day with a poor batting average of .186, sent a fastball off the wall in center field with one out in the sixth to give the Pirates the lead. Mercer finished with three RBIs, nearly doubling his season total.
Neil Walker added his second homer and the Pirates ended a seven-game losing streak to the Cardinals.
St. Louis' Jhonny Peralta and Jason Heyward had two hits each. Both were on base in the second inning when Yadier Molina hit into the franchise's first triple play in nearly 12 years.
Kansas City's Alcides Escobar homered on the first pitch of the game and made a sparkling catch to set up the Royals' 6-2 win against Detroit.
Starter Jeremy Guthrie (2-2) allowed two runs in 7 1-3 innings for the Royals. It was the first time this year he had given up less than three runs.
Houston's Chris Carter and Colby Rasmus hit two-run homers to power the Astros to a 6-5 win at the Angels.
Astros starter Dallas Keuchel (4-0) wasn't in his unhittable April form, but the left-hander remained unbeaten while his ERA rose from 0.80 to a still miserly 1.39.
Los Angeles had two men on base in the bottom of the ninth when Albert Pujols ground out to end the game, and also his 11-game hitting streak.
Baltimore's Chris Davis hit one of his team's three home runs as the Orioles won 6-2 at the Yankees.
That arrested a four-game New York slide which included two losses at the Mets then two at Yankee Stadium.
Orioles starter Wei-Yin Chen (1-1) struck out a season-high seven and walked only one in seven innings, giving up his only run on a sacrifice fly.
Washington's Bryce Harper extended his remarkable homer streak with a two-run shot in the bottom of the ninth inning that gave the Nationals an 8-6 win against Atlanta.
Harper homered for the sixth time in his past three games, one off the major league record set by Shawn Green in 2002.
At 22, Harper had already become the youngest player in big league history to hit five home runs in two games. His one-out drive pushed the Nationals, a preseason favorite to win the World Series, over .500 for the first time this year.
San Diego's Justin Upton made up for an earlier gaffe with a home run in the 12th inning that lifted the Padres to a 6-4 win at Arizona.
Arizona had forced extra innings when Danny Dorn doubled in two runs off Padres closer Kimbrel to tie it in the ninth. That was Kimbrel's first blown save in 11 months, ending a run of 35 consecutive saves.
Upton, the ex-Diamondback whose ill-advised dive turned into an RBI triple in the fourth inning, also singled in a run in the ninth.
New York's Juan Lagares hit a rare homer as the Mets won 3-2 at Philadelphia.
Lagares, not known for his power, lined a pitch over left field with one out in the seventh for what proved the final run of the game. The two-run homer was Lagares' first of the season and only the ninth of his career.
Mets starter Jonathon Niese (3-2) pitched seven strong innings to improve to 5-0 in his past seven starts against the Phillies. He gave up only two unearned runs and one walk with six strikeouts.
Miami's Marcell Ozuna homered off Madison Bumgarner in a three-run fourth inning that delivered a 6-2 win over San Francisco.
Toronto's Edwin Encarnacion hit a three-run homer and Josh Donaldson had three hits as the Blue Jays cruised past Boston 7-1, inflicting a seventh loss in eight games on the Red Sox.
Tampa Bay reliever Andrew Bellatti, who served jail time as a teenager after a fatal car crash, won on his major league pitching debut, steering the Rays to a 7-2 win against Texas.
Minnesota veteran Torii Hunter continued his hot form with three hits, including a home run, to lead the Twins to a 7-4 victory over Cleveland.
Cincinnati and the Chicago White Sox split their double header, with the Reds taking the day game 10-4 and Carlos Rodon pitching six innings for his first major league win as the White Sox won the nightcap 8-2.
Milwaukee's Jason Rogers hit his first career home run and Gerardo Parra also homered and drove in four runs as the Brewers powered past the Chicago Cubs 12-4.
Seattle capitalized on a season-worst four errors by Oakland to win 7-2, with Robinson Cano contributing three hits and an RBI for the Mariners.