KANSAS CITY, Mo. -- Edinson Volquez pitched effectively into the eighth inning against his old team and Mike Moustakas hit a three-run homer to lead the Kansas City Royals over the Pittsburgh Pirates 5-1 on Wednesday night.

Volquez (9-5), who won 13 games last season for the Pirates, picked up his first victory since June 26. He allowed one run on eight hits, while walking one and striking out eight.

Moustakas homered with two out in the eighth with Alex Rios and Jarrod Dyson aboard. Moustakas drove the 3-0 offering from right-hander Charlie Morton into the Royals' bullpen.

More from FoxSports

Dyson's bunt single scored Omar Infante with the first run of the inning.

Morton (6-4) allowed five runs on seven hits, two of them home runs, walked one, hit two batters and struck out four. He is 1-3 in his past five starts, inflating his ERA from 1.62 to 4.59.

Eric Hosmer hit his ninth home run, matching his 2014 total, in the fourth for the other Kansas City run. Hosmer went 101 at-bats since his previous homer on June 19.

Neil Walker's sacrifice fly in the third scored Jaff Decker for the only Pittsburgh run.

The Pirates went 0 for 6 with runners in scoring position off Volquez. Opponents are hitting just .186 off Volquez with runners in scoring position.

The Pirates have lost five of six since the All-Star break. The Royals have won six of eight and top the American League with 57 victories.

TRAINER'S ROOM

Pirates: C Francisco Cervelli missed his second straight game with a right wrist contusion, but manager Clint Hurdle said he would likely return to the lineup Thursday.

Royals: LHP Jason Vargas, who left after 26 pitches with elbow pain Tuesday, has a torn ligament that will require season-ending Tommy John surgery. RHP Yordano Ventura, who was optioned Tuesday to Triple-A Omaha, was recalled and will start Sunday against the Astros.

UP NEXT:

Pirates: LHP Francisco Liriano, who was scratched from a Saturday start at Milwaukee with a stiff neck, will start Thursday against the Nationals.

Royals: RHP Chris Young will start Thursday at St. Louis, a makeup game from a June 14 rainout. Young threw six scoreless innings on May 20 to beat the Cardinals.