St Louis: Detroit slugger Miguel Cabrera ended his peculiar season-long slump in night games by hitting a two-run homer and two singles to power the Tigers to a 10-4 win against majors-leading St Louis on Friday.

The victory kept the Tigers within one game of the American League lead, jointly held by Kansas City, who routed the New York Yankees, and surprise packet Houston, who beat Toronto.

The Yankees retained the AL East Division lead as nearest rivals Tampa Bay lost at Minnesota.

Detroit got homers from Yoenis Cespedes and J.D. Martinez along with Cabrera, who entered the game with a batting average of just .158 with no homers and one RBI in night games, as opposed to a .471 average with eight homers and 25 RBIs in day games.

He went some way to correcting that imbalance by hitting his 399th career homer and third in two games with a seventh-inning long shot, tying Andres Galarraga for most by a Venezuelan-born player.

Martinez followed with his eighth homer of the season to make it 5-0.

Kansas City’s Lorenzo Cain had a career-high five RBIs as the Royals thrashed the Yankees 12-1.

Kendrys Morales drove in three more runs for the Royals, who scored six times in the sixth inning.

Matching a career worst

New York starter Michael Pineda matched a career worst by giving up 10 hits as the Yankees suffered their fourth straight loss.

Houston pitcher Dallas Keuchel improved his season win-loss record to 5-0 as he guided the Astros to an 8-4 win against Toronto.

Keuchel (5-0) won his seventh straight decision stretching back to last season.

The win owed much to his early run support, as Jose Altuve hit a three-run homer for the Astros, who won a third straight game.

Minnesota’s Danny Santana hit a triple which keyed a late two-run rally that lifted the Twins to a 3-2 win against Tampa Bay.

The Rays led 2-1 in the seventh before Aaron Hicks led off with a single and Santana followed by hooking a ball into the right-field corner for a triple that tied the game. Brian Dozier then put the Twins on top 3-2 with a sacrifice fly.

Twins starter Phil Hughes (3-4) gave up two runs in seven innings to win his third straight start.

Washington’s Bryce Harper hit his NL-leading 13th homer of the season as the Nationals crushed San Diego 13-0.