Miguel Cabrera homered and drove in three runs, and the Detroit Tigers held off the New York Yankees 6-5 on Tuesday night for their sixth straight victory.

New York scored twice off closer Jose Valverde in the ninth inning and had runners at second and third when Curtis Granderson popped up for the final out. The AL East leaders have lost 12 of 18.

Cabrera has moved into the MVP race by hitting .333 since the All-Star break with 11 homers and 24 RBIs in 24 games. Andy Dirks added three hits and two RBIs for the Tigers, who are chasing the first-place White Sox in the AL Central.

Rick Porcello (9-6) picked up the win, allowing three runs and eight hits in 6 2/3 innings. He struck out three and didn't walk a batter.

Porcello is 3-0 with a 2.03 ERA in his last four home starts against the Yankees. Three relievers finished, with Valverde staggering to his 22nd save in 26 tries.

Ichiro Suzuki hit an RBI single with two outs in the ninth and Russell Martin followed with a run-scoring double to left. Suzuki was held at third, however, and Granderson popped out to first.

Phil Hughes (11-9) struggled after dominating the Tigers the previous time he faced them. After tossing a four-hitter on June 3, he lasted just 4 1/3 innings this time, giving up four runs and eight hits.

The game was scoreless until Eric Chavez's two-run homer for the Yankees in the fourth. Chavez had three hits against Justin Verlander on Monday.

Cabrera made it 2-1 with a line drive into the left-field stands in the bottom of the inning. The homer was his 19th at Comerica Park, tying the stadium record he set in 2008 and matched in 2009. Jhonny Peralta made it 2-2 with a two-out double off Hughes.

Cabrera chased Hughes with a two-run double in the fifth, and Andy Dirks' run-scoring double gave the Tigers a three-run lead in the next inning.

Suzuki's RBI double pulled the Yankees to 5-3, but Dirks restored the three-run cushion with an RBI single in the eighth.

Royals 5, White Sox 2

CHICAGO — Bruce Chen outpitched Jake Peavy for his first win in six weeks, Billy Butler hit his career-high 22nd homer and the Kansas City Royals beat the Chicago White Sox 5-2 on Tuesday night.

The White Sox had won 10 of 13 but saw their lead over Detroit in the AL Central shrink to a half game with the Tigers beating the New York Yankees 6-5 earlier in the night.

Gordon Beckham hit his first career leadoff homer for Chicago, and the White Sox scored again in the sixth after Kansas City tied it in the top half. But RBI singles by Tony Abreu and Alex Gordon off Peavy (9-8) in the seventh gave Kansas City a 3-2 lead.

Butler added to it in the eighth with a two-run drive off Nate Jones after Mike Moustakas walked, and the Royals hung on from there, giving Chen (8-9) his first win since June 26.

Rangers 6, Red Sox 3

BOSTON — Ryan Dempster rebounded from a rough debut with Texas by pitching shutout ball into the seventh inning, Ian Kinsler had a pair of RBI singles and the Rangers snapped a two-game losing streak with a 6-3 win over the Boston Red Sox on Tuesday night.

Josh Hamilton and Nelson Cruz each had two hits and drove in a run for Texas.

Will Middlebrooks had a pinch-hit three-run homer for the Red Sox, who have lost five of seven.

The AL West-leading Rangers have lost three straight only three times this season.

Dempster (1-0) gave up Middlebrooks' homer after a two-out error by Kinsler. He allowed three unearned runs, six hits, struck out six and walked one in 6 2/3 innings.

Jon Lester (5-10) gave up four runs on six hits in 6 2/3 innings. He's 0-5 in his last six starts.

Twins 7, Indians 5 

CLEVELAND — Tsuyoshi Nishioka's sacrifice fly scored the go-ahead run in the ninth inning and the Minnesota Twins rallied for a 7-5 victory over Cleveland, sending the Indians to their 11th straight loss.

Minnesota scored three times off All-Star closer Chris Perez (0-4), who blew his second save opportunity in three days.

The Indians led 5-1 after six innings, but two errors in the seventh and another in the ninth helped Minnesota rally for its fifth win in six games and seven straight victories over Cleveland.

The Indians matched their second-longest skid, having dropped 11 straight on four occasions, most recently Sept. 13-24, 2009. Cleveland, which hasn't won since July 26, has been outscored 95-36 in the streak.

Tyler Robertson (1-0) pitched two innings for his first major league win. Glen Perkins pitched the ninth for his seventh save.

Orioles 8, Mariners 7

BALTIMORE — Adam Jones singled home the winning run in the 14th inning, and the Baltimore Orioles beat the Seattle Mariners 8-7 Tuesday night after rallying from a five-run deficit.

It was the fourth straight victory for the Orioles, who moved eight games over .500 (59-51) for the first time since June 29.

Matt Wieters homered twice, J.J. Hardy contributed a pivotal three-run drive and Nick Markakis had four hits for the Orioles, who trailed 5-0 in the second inning and 7-2 in the sixth. Baltimore has won 11 straight one-run games and a club-record 12 in a row in extra innings. The game lasted 4 hours, 55 minutes and featured a disputed play in the 14th inning.

Athletics 10, Angels 4

OAKLAND, Calif. — Bartolo Colon took a shutout into the seventh inning and four Oakland players hit home runs.

Colon extended his scoreless streak to a career-high 22 1/3 innings as the A's snapped a three-game losing streak and moved a half-game ahead of the Angels into second place in the AL West.

Jonny Gomes, Derek Norris, Adam Rosales and Josh Reddick hit home runs and accounted for eight RBIs for the A's. Jemile Weeks also drove in a run.

Colon (9-8) allowed four hits over seven innings. He did not walk a batter and struck out five.