KANSAS CITY, Mo. -- Zack Greinke is finishing up a disappointing season with some late success.
Mike Sweeney's RBI double with two outs in the bottom of the ninth inning gave the Royals a 5-4 victory in the opener.
The Tigers have lost six in a row and 17 of 21 in September. Kansas City avoided its 100th loss for the third consecutive game and swept a doubleheader for the first time since June 7, 2003, at Colorado.
Greinke (5-16), who is 2-0 in four September starts, held the Tigers to two runs and six hits over seven innings. He struck out four and walked none. Greinke is tied with teammate Jose Lima for the most losses in the American League.
"He was piling up the zone with strikes," Royals catcher Paul Phillips said. "He established his fastball in and away. He threw his changeup and curveball for strikes. When you're throwing three pitches for strikes and moving your fastball around, you're going to have success."
Greinke threw 67 strikes in 100 pitches. He improved to 5-1 in seven career starts against the Tigers, who have mostly right-handed hitters.
"I have more success against righties," Greinke said. "They haven't proven to be one of the better teams in baseball the last two years, either."
Mike MacDougal, the winning pitcher in the first game, worked the ninth for his 20th save in 23 tries.
"We're just not getting it done," Tigers manager Alan Trammell said. "I'm not getting the message across. This really bothers me. I know I'm responsible, but guys have got to do it. It's inexcusable to be going through this losing streak. Losing doesn't sit well with me. It shouldn't sit well with anybody. We have to keep working. I know no other way. There's no magic potion."
Brown hit his 15th home run, a solo shot estimated at 440 feet to left-center, in the third and leads the Royals with 80 RBI. It was the longest home run by a Royal this year at Kauffman Stadium. Ambres hit his third career homer in the fifth.
The Royals scored an unearned run in the first inning after Ambres reached on shortstop Omar Infante's throwing error. He advanced to third on Aaron Guiel's single and scored on Sweeney's sacrifice fly.
In the second, Justin Huber scored on Donnie Murphy's sacrifice fly. Trammell was ejected by plate umpire Lance Barksdale for arguing that Magglio Ordonez's throw beat Huber.
Craig Monroe and Vance Wilson doubled in the fifth for the first run off Greinke. Wilson also drove in a run in the seventh with a groundout, which scored Carlos Pena.
Detroit's Nate Robertson (6-15) has lost five consecutive starts since beating Oakland on Aug. 23. He gave up four runs -- three earned -- and six hits in seven innings.
"I thought I threw all right, but it wasn't enough," Robertson said. "I did all I could. It's been a rough stretch. I'm only speaking for myself, but I can't accept the outcome of this year."
Detroit DH Dmitri Young (hamstring) is limited to pinch-hitting duties. ... RHP Jason Grilli made his Tigers debut in relief in the opener. It was exactly 30 years ago that Grilli's dad, Steve, made his Detroit debut. ... Ambres has batted leadoff 12 times this season. ... Detroit's Ivan Rodriguez caught his 1,806th game in the opener, tying Rick Ferrell for ninth in major-league history.