KANSAS CITY, Mo. (AP) — Brad Keller kept up his recent pitching surge with another strong outing.

Keller gave up a home run to the first batter of the game — Cedric Mullins — but quickly settled in to pitch eight strong innings in the Kansas City Royals' 9-2 win over the Baltimore Royals in a matchup of the teams with the worst records in the majors.

"Every time he takes the mound, you expect him to keep you in the ballgame," Royals manager Ned Yost said. "He just did what he does so well. He keeps the ball on the ground and did a nice job doing that."

Keller (7-5) gave up two runs and four hits with two walks and four strikeouts to improve to 3-0 with a 2.16 ERA in his last four starts.

"I was just trying to get in a groove and throw strikes," he said. "I just made a mistake (to Mullins). You've got a long game after that. You've got to flush it and lock it back in.

Ryan O'Hearn homered among his three hits and drove in four runs, Whit Merrifield scored three runs, and Hunter Dozier and Cam Gallagher also went deep to help the Royals win for the fifth time in six games on their current homestand.

"They're not exactly household names yet, O'Hearn, Dozier and Gallagher," Yost said. "But they're doing okay. You watch Dozier who looks totally comfortable now. O'Hearn has always been a guy with a lot of confidence that he can hit. It's nice to see Cam get off to a good start too."

With the scored tied 1-1 in the fourth, Andrew Cashner (4-13) gave up a sacrifice fly to Merrifield after loading the bases on two walks and a single. Dozier led off the fifth inning with a 423-foot home run to left field to make it 3-1.

"(Cashner) was having trouble gripping his breaking ball," Baltimore manager Buck Showalter said. "He never really got a feel for it. He'd throw a couple and it's just hard to go through that many hitters, especially lefthanders, without a feel for a breaking ball. I think the last home run is the one that's going to stick with him. He could have come out of that with three runs, not being able to do the things he normally does."

The Orioles pulled within a run in the sixth when Mullins led off with a double just beyond the reach of Dozier at third, advanced to third on a fly ball and scored on Trey Mancini's sacrifice fly to the wall in right.

The Royals answered in the bottom of the inning as Gallagher hit his first home run of the season, ending Cashner's night.

"I think he was trying to get it out over the plate but it backed up on him," said Gallagher, who was recalled from Triple-A Omaha Friday after the Royals traded catcher Drew Butera to the Colorado Rockies. "He just left it middle-in and I was able to get a good swing on it."

Cashner, who has given up a career-high 21 homers, allowed four runs and nine hits in 5 1/3 innings. He walked three and struck out one.

"That was probably some of the worst stuff I've carried into a game," Cashner said. "My sinker was not there tonight. (My) offspeed pitches were not there. (I) didn't really command anything for a strike."

O'Hearn added a two-run single off Yefry Ramirez later in the sixth to push Kansas City's lead to 6-2. Dozier's RBI single in the eighth drove in Merrifield for his third run scored of the game, and O'Hearn added a two-run homer off Ryan Meisinger to cap the scoring.

TRANSACTIONS

Orioles: OF Joey Rickard was recalled from Triple-A Norfolk. ... RHP Jhan Marinez was reinstated from the 10-day disabled list (right hamstring strain). He cleared waivers and was assigned outright to Norfolk. ... OF Craig Gentry was designated for assignment.

Royals: Butera was traded to the Colorado Rockies for LHP Jerry Vasto, who was assigned to Triple-A Omaha. ... OF Brian Goodwin was reinstated from the 10-day disabled list.

TRAINER'S ROOM

Orioles: OF Mullins, who missed Wednesday's game with a hip injury, was back in the lineup in the leadoff spot. "I'm feeling good," he said prior to Friday's game. "I'm excited to get back out. I've been with the trainers; we've had some intense treatment going on, but I feel really good."

Royals: C Salvador Perez was held out of the lineup for precautionary reasons with a mild strain of his left thumb. Perez, who missed Wednesday's game against Detroit, hurt the thumb on Tuesday when he lost his grip on the bat during a swing against the Tigers. Manager Ned Yost said Perez could have caught Friday, but swinging would be difficult. Perez was replaced in the lineup by Gallagher.

UP NEXT

Orioles RHP Dylan Bundy (7-13, 5.37 ERA) will face another Royals rookie pitcher as RHP Heath Fillmyer (2-1, 4.21) takes the mound for Kansas City. Fillmyer will make his first career start against the Orioles. Bundy is 1-1 with a 5.87 ERA all-time against Kansas City, including one start this year May 8 in Baltimore, in which he gave up seven earned runs without recording an out.

___

More AP MLB: https://apnews.com/tag/MLB and https://twitter.com/AP_Sports