The Royals won for the 16th time in 20 games since the All-Star break. The Red Sox, who have the best record in the American League, lost for only the third time in 10 games.
Chen retired 15 on fly-ball outs.
"A phenomenal job," Royals manager Ned Yost said. "He was ahead in the count most of the night. He commanded the ball down, commanded the ball up, changed speeds. Anytime you see a lot of popups, out-front swings, you know Bruce is on his game and he got an awful lot of them tonight."
Chen, who was making his fifth start since beginning the season in the bullpen, did not allow a runner past first base until the eighth and retired 11 in a row in one stretch. He gave up five singles, walked one and struck out two before leaving with two outs in the eighth inning.
"Movement on the ball," Chen said of the high number of fly outs. "They see it and at the last moment, it cuts or sinks or they're a little bit out in front. I think, also, the combination of different pitches, not repeating the same pitch or same pattern has to help. Brett (Hayes, the catcher) did a really good job of reading the hitters."
Hayes, who was just called up from Triple-A Omaha, had not caught Chen since spring training.
"Bruce was being Bruce," Hayes said. "He kept hitters off balance, throwing all of his pitches for strikes, making them chase and out in front. He's just a veteran who knows how to pitch. Anybody who pitches like that is fun to catch, especially him."
Red Sox manager John Farrell was impressed with Chen.
"He varied his arm angle, varied his speed, stayed out of the middle of the strike zone, then he would elevate to give us a different look," Farrell said.
Luke Hochevar got the final four outs for his second career save.
Lester (10-7), who came into the game with a 6-2 record and 1.64 ERA in nine starts against the Royals, needed 41 pitches in the first inning when Kansas City sent eight men to the plate and scored three runs.
"Moustakas had a huge hit to put us by three," Yost said.
"Obviously it was a long first, a lot of pitches," Lester said. "I knew I had to somehow grind my way through it and get seven, save the bullpen. That's something you have to learn to do, to find a way in those outings to go six or seven or maybe eight, and I was able to do that."
Lester, who was roughed up for six runs and 11 hits in 4 1/3 innings by Arizona in his previous start, shut down the Royals after the first, allowing just two more singles in seven innings.
"I thought he righted himself and did a tremendous job to go seven and give us an opportunity to win," Farrell said.
Stephen Drew, who had two hits to extend his hitting streak to a season high nine games, singled home Gomes in the ninth for the only Red Sox run.
"Bruce is the star of the game," Butler said. "He absolutely pitched his game. He held down a pretty good offense."
The Royals optioned LHP Danny Duffy to Triple-A Omaha and purchased the contract of LHP Francisley Bueno from their Pacific Coast League affiliate. ... Daniel Nava came off the paternity leave list and started at first base for the Red Sox, who optioned RHP Steven Wright to Triple-A Pawtucket. ... DH David Ortiz, who had started 95 games, was not in the Red Sox lineup. "It's not injury related," Farrell said. "It's just a day. Truth be told, we'd expected more off days overall than he has been." ... Red Sox RHP Clay Buchholz, who went on the disabled list June 18 with a neck strain, is scheduled to throw 25-30 pitches off the mound Friday.