Hosmer's double capped off a 3-for-5 night. Mike Moustakas went 3-for-4 with a two-run home run while Jeff Francoeur was 3-for-4 with two RBI and two runs scored for the Royals.
Royals starter Felipe Paulino lasted six innings, surrendering three runs on seven hits, while walking three and fanning three.
Greg Holland (5-1) pitched a flawless ninth, fanning two, as the Royals won their season-high sixth straight.
White Sox starter Philip Humber got shelled for six runs -- five earned -- on nine hits, while walking two and striking out four in six frames.
Teaford, a 12th-round pick out of Georgia Southern in 2006, debuted with 23 straight relief appearances this season before making start No. 1 on Sept. 11 in Seattle and emerging with a 2-1 victory.
He allowed three hits in five scoreless innings, walked one and struck out five while lowering his season earned run average from 3.21 to 2.73.
His previous long outing had been three innings, which he'd done twice, most recently against Cleveland on Sept. 2.
He's faced the White Sox twice and pitched a combined 1 1/3 innings while allowing two hits.
Chicago counters with 24-year-old Zach Stewart, who'll make start No. 10 of his rookie season.
Stewart, a third-round pick of the Cincinnati Reds in 2008, reached the majors with Toronto earlier this season and was 0-1 in three starts with a 4.86 ERA in 16 2/3 innings.
He came to Chicago in a July 27 deal that sent Edwin Jackson and Mark Teahen to Toronto, nearly two years to the day after he was sent from Cincinnati to the Blue Jays in a trade that involved Scott Rolen.
Stewart has faced Kansas City in his second appearance with the White Sox and took a 5-1 loss after allowing seven hits and two runs in 6 1/3 innings.
The Royals have won eight of their 13 matchups with the White Sox this season.