Every Blue Jays starter had at least one hit as Toronto won for the fourth time in six games. The Blue Jays are 6-1 against Kansas City this season and have won nine of the past 12 meetings dating to 2011.
Jeff Francoeur's RBI triple in the seventh provided the only run of the game for the Royals, who have lost five of six.
The Blue Jays added two more in the third. Edwin Encarnacion led off with a single, extending his hitting streak to 10 games, and Adam Lind followed with a double before Escobar and Davis hit back-to-back sacrifice flies.
Escobar added an insurance run in the eighth with a two-out RBI single off Kelvin Herrera.
Starting for the second time this season after making 22 relief appearances, Villanueva (3-0) allowed just four hits, three of them singles. He walked none and matched a season-high with seven strikeouts.
Jason Frasor replaced Villanueva in the seventh but couldn't keep the shutout bid alive. Moustakas hit a two-out single and scored when Francoeur tripled to left on a ball that skipped past Davis and rolled all the way to the wall.
Darren Oliver pitched the eighth and Casey Janssen finished in the ninth for his 11th save in 12 opportunities.
Coming off a win over Minnesota in his last start, Royals right-hander Luis Mendoza pitched well but was unable to earn consecutive victories for the first time this season. Mendoza (3-5) allowed three runs and nine hits in six innings. He walked one and struck out a career-high nine.
NOTES: Kansas City recalled RHP Nate Adcock and RHP Louis Coleman from Triple-A Omaha and designated OF Mitch Maier for assignment. ... Jamie Moyer allowed seven runs and 10 hits in six innings in his second start at the Blue Jays' Triple-A Las Vegas on Tuesday, taking the loss in a 7-3 defeat to Reno. Blue Jays manager John Farrell said no decision has been made on the 49-year-old left-hander's future with Toronto. ... Lind moved up to fifth in Toronto's batting order, with Johnson dropping to the eighth spot. ... Kansas City DH Billy Butler went 0 for 3 with a walk. Butler is 0 for 23 against Toronto pitching this season.
- Toronto Blue Jays
- Carlos Villanueva
- Kansas City Royals
- The Blue Jays
- Yunel Escobar
- Kansas City
- Jeff Francoeur
- Rajai Davis