KANSAS CITY, Mo. (AP) - Zach Eflin and backup catcher Andrew Knapp have a good thing going. Phillies manager Gabe Kapler isn't about to break them up.
Eflin became the majors' first pitcher with two complete games this season, lifting Philadelphia over the Kansas City Royals 7-0 Saturday night.
Knapp has caught Eflin's last three starts, and the 25-year-old right-hander has rolled right through them. He pitched nine innings of one-run ball two starts ago against Miami, then delivered seven innings of one-run ball last time out against Washington.
Now, this gem, Eflin's second career shutout and first since July 22, 2016 in his eighth major league start.
"I will say this, if he throws complete-game shutouts, I will not not have Knapp catch him the next time out," Kapler said.
Eflin (5-3) allowed four hits, struck out seven and walked none while throwing 110 pitches.
"There's so many guys that pitch away from contact in this game," Kapler said. "He's fearless. He's attacking the zone with all of his pitches."
Knapp and Eflin have played together since Double-A in 2015 and developed a strong chemistry.
"I think it goes a long way when a guy trusts his catcher the way Zach trusts me and that didn't come all at once," Knapp said. "That's been a long time coming with a lot of games played together, but we're definitely on the same page. All I'm doing is calling the pitches. He's the one executing it, so all the credit goes to him."
"He knows what I'm best at, probably moreso than I do," Eflin said.
Odubel Herrera doubled and tripled, and Andrew McCutchen and Rhys Hoskins each drove in two for Philadelphia. The Phillies worked seven walks, with every starter reaching base at least once.
Brad Keller (2-4) struggled with his command again, an issue that has plagued him all season. Keller walked four, hit one and threw a wild pitch in five-plus innings. The Phillies turned those free passes into six runs despite just five hits.
"I was yanking my head and pulling off pitches," Keller said. "We had a really good game plan going in. We didn't execute it the way we wanted to."
It was Keller's eighth consecutive start with at least three walks.
"He's fighting his mechanics, which in turn leads to him fighting his command," Royals manager Ned Yost said. "Walks hurt him, especially walks to the bottom-of-the-order guys. He's battling through it."
The top four batters in the Royals lineup each had one hit off Eflin, while the bottom five went 0 for 14.
"He hit a lot of corners. He was getting a little bit off the corners, too," Royals infielder Whit Merrifield said. "But when you're pounding the zone, you tend to get those good pitcher's pitches. He mixed it up enough. He didn't throw it over the white a whole lot. When you mix that with good stuff it's hard to hit."
Adalberto Mondesi stole his 13th base of the season and third over his last two games, breaking a tie with Tim Anderson of the Chicago White Sox for most in the majors.
Phillies: Philadelphia placed RHP Vince Velasquez (right forearm strain) on the injured list, retroactive to May 8. ... The Phillies recalled LHP Austin Davis from Triple-A Lehigh Valley. Davis made his only major league appearance this season on April 21, throwing two scoreless innings against the Colorado Rockies.
Royals: RHP Jakob Junis (3-3, 5.52 ERA) will start the series finale Sunday. Junis is coming off a 6-4 loss to Houston where he gave up three home runs and a season-high nine hits in 5 1/3 innings of work.
Phillies: LHP Cole Irvin is expected to make his major league debut Sunday. Irvin is 2-0 with a 2.25 ERA in six starts this season for Triple-A Lehigh Valley.