Billy Butler drove in the go-ahead run in the eighth inning Tuesday night, and the Royals got a superb start from Luis Mendoza to spoil Zack Greinke's return to Kansas City with a 2-1 win over the Milwaukee Brewers.

Alex Gordon homered to lead off the bottom of the first, and then doubled leading off the eighth, heading to third base on a sacrifice bunt by Chris Getz. That set the table for Butler, who sent a pitch from Francisco Rodriguez (0-4) into center field to score the go-ahead run.

Mendoza didn't allow a hit until he got into trouble in the seventh, and the Kansas City bullpen came through with aplomb. Aaron Crow limited the damage to Rickie Weeks' tying single, and Greg Holland (2-2) survived a shaky eighth inning to get the game to Jonathan Broxton.

The big closer put runners on the corners with one out in the ninth, but struck out pinch-hitter George Kottaras and got fellow pinch-hitter Brooks Conrad to ground out to shortstop to end the game and wrap up his 15th save of the season.

The victory snapped the Royals' four-game losing streak.

Greinke was chosen by the Royals in the first round of the 2002 draft, and they stuck by him through the well-documented personal issues that forced him to leave the game for a while.

He returned to become one of the baseball's best pitchers, going 16-8 with a 2.16 ERA in 2009 to win the American League Cy Young Award. He regressed only slightly the following year, and was eventually dealt to Milwaukee after the 2010 season.

The Royals picked up their starting shortstop, Alcides Escobar, along with outfielder Lorenzo Cain and minor league pitcher Jake Odorizzi in the deal. Yet many still wonder whether they were wrong to trade away one of their best homegrown pitchers.

Greinke certainly gave those folks some fodder in his return to Kauffman Stadium.

After serving up Gordon's sixth career leadoff homer, Greinke allowed only one hit over the next four innings, striking out the side in the fourth. He didn't allow a runner to reach second base until the fifth, and then left him stranded there by recording three straight outs.

His low-90s fastball and pinpoint command was precisely what Royals fans remembered.

Mendoza gave them something entirely unexpected.

The underwhelming right-hander, who had been shuttling between the starting rotation and the bullpen most of the season, set Milwaukee down in order in the first inning.

He didn't allow a runner until walking Weeks with two out in the second, and that was it until he hit Norichika Aoki on the foot leading off the fourth inning.

By the time Mendoza had shut down Milwaukee in order the next two innings — and had thrown just 64 pitches — there were some rumblings that Mendoza could be on his way to pitching the fifth no-hitter in franchise history, and the first since Bret Saberhagen more than 20 years ago.

That's when the circus music started playing for the Kansas City defense.

Third baseman Mike Moustakas made a great stop on a grounder down the line by Ryan Braun, but his throw probably wouldn't have been in time even had it been on target. Braun was credited with a single, went to second when Moustakas' throw was wide of the bag for an error, and wound up on third when Chris Getz's ensuing throw was also wide of second base.

Mendoza walked Aramis Ramirez before he was lifted for Crow, drawing an appreciative round of applause from an announced crowd of 24,258 on a picturesque evening.

The Royals nearly got out of the jam when Taylor Green flied out to Gordon in left, and his pinpoint throw down the line doubled up Braun trying to score. But Weeks came through with his RBI single on a 3-2 pitch with two outs in the inning to tie the game.

Mendoza wound up allowing the Brewer's lone run on one hit and two walks, while Greinke gave up six hits and a run in seven innings, striking out eight without issuing a free pass.

NOTES: The Royals activated 2B Getz (bruised ribs) and optioned 2B Johnny Giavotella to Triple-A Omaha. ... Royals manager Ned Yost said he hasn't decided on a starter for the series finale Thursday, though LHP Jonathan Sanchez (left biceps tendinitis) could come off the DL. ... Braun's single in the seventh inning extended his interleague hitting streak to 17 games. ... LHP Randy Wolf starts Wednesday night for Milwaukee. RHP Luke Hochevar goes for Kansas City