Chris Sale was short of his All-Star best. He was still good enough to win his eight straight decision.

Adam Dunn homered in his third straight game and the Chicago White Sox beat the Kansas City Royals 2-1 Sunday.

Sale (11-2) is 8-0 with two no-decisions since a May 12 loss to the Royals.

He allowed one run and scattered a season-high 10 hits eight innings to lower his earned run average to 2.11, which ranks second on the American League. He struck out four and walked none.

"Obviously, a lot of hits," Sale said. "You just try to brush that off and keep going about what you need to do and have that mindset and go out and still make pitches."

Sale, who is from Florida, liked the 94 degree temperature for the first pitch.

"I've always said I like pitching in warm weather way better than cold. It's definitely nice to have some heat out there today."

Sale threw 115 pitches, but manager Robin Ventura had no qualms about sending him out for the eighth inning.

"It was his game," Ventura said. "He finds a way to get himself into trouble and out of trouble, too."

Dunn, who leads the league with 28 home runs, drilled a 2-0 pitch from Luis Mendoza (3-6) just inside the right-field pole in the first inning. Dunn has 65 hits overall this season, meaning 43 percent of them have been home runs.

"On 2-0, I was geared up for a fastball and it was a changeup," Dunn said. "I just caught it out in front. I don't hit many of those line drive home runs. I could have easily hooked it foul. That was obviously a positive thing. That's what we've been working on all spring to stay inside of it."

Addison Reed, who blew a save Friday, worked a scoreless ninth for his 14th save in 16 opportunities.

The White Sox loaded the bases with no outs in the second when Alex Rios singled, A.J. Pierzynski was hit by a pitch and Dayan Viciedo hit an infield single. They converted that into just one run when Rios scored as Alexei Ramirez grounded into a double play. Mendoza threw but seven pitches to five batters that inning.

Mendoza allowed just one hit after the second inning, but took the loss. He gave up two runs on four hits in 7 1-3 innings, while striking out six and walking four.

The Royals avoided a shutout when Mike Moustakas, who led off the fifth with a single and advanced to second on a Sale wild pitch, scored on a Chris Getz single.

Getz moved to third on Alex Gordon's single, but was stranded when Alcides Escobar struck out and Butler grounded out.

The Royals went 1-for-11 with runners in scoring position against Sale.

"We knew who we had to face today and he was as good as advertised," Royals right fielder Jeff Francoeur said. "He has his fastball in the 86 to 95 range and a change of pace and the slurve. His speed is all over the place. With him it's hard to get that gapper. You've got to be patient. You can't be trying to kill if or he'll get you with that off-speed every time."

The AL Central leading White Sox are 7-2 in their past nine games. The Royals lost for the 10th time in 13 games.

NOTES: 1B Eric Hosmer, who is hitless in his past 11 at-bats to drop his average to .224, was not in the Royals lineup Sunday. ... Royals C Manny Pina, who had knee surgery in spring training, was reinstated from the disabled list and optioned to Double-A Northwest Arkansas. RHP Felipe Paulino, who had season-ending elbow surgery, was transferred from the 15-day DL to the 60-day. ... Dunn has homered in three straight games for the second time this season. The first was June 9-12. ... White Sox 1B Paul Konerko is hitting .228 since May 28. He had a .399 average before then. ... LHP Jonathan Sanchez, who has not won since April 8, will be the Royals' starter Monday for the series opener against Seattle. The Mariners will counter with LHP Jason Vargas. ... The White Sox travel to Boston, which will be a homecoming for 3B Kevin Youkilis. The Red Sox dealt him on June 24 to Chicago.