Keller (7-9) struck out six and allowed three runs and two walks in 6 2/3 innings to pick up a win for the first time since June 4. Keller had gone 0-5 with two no-decisions over his last seven starts, though he’s pitched well in his three July appearances.
Scott Barlow retired the side in order in the ninth for his fifth save in eight opportunities.
The Royals boosted Keller by capitalizing on some shaky Brewers defense.
Kansas City couldn’t get a single runner on base against Eric Lauer in the first three innings, but a wild throw to first by Brewers third baseman Luis Urías allowed Whit Merrifield to reach second to lead off the fourth. Andrew Benintendi hit an RBI double with two outs and scored on Hunter Dozier’s bloop hit.
The Brewers pulled ahead with a three-run rally in the fifth that included an RBI double from Christian Yelich.
Kansas City regained the lead for good by scoring three runs off Brent Suter (9-5) in the sixth.
The Royals had a runner at first with one out when first baseman Jace Peterson couldn’t handle a grounder from Benintendi. Dozier followed Peterson’s error by delivering a single that made it 3-all.
With the bases loaded and two outs, Lopez hit a two-run double to right that put the Royals back in front.