Jason Bay had a three-run home run for the Red Sox, who lead Texas by 7 games in the AL wild-card chase. The Rangers beat Oakland Monday 10-3.
Victor Martinez had two RBI and ran his hitting streak to a career-best 20 games. Jacoby Ellsbury knocked in two runs for Boston.
Red Sox starter Tim Wakefield went five innings, allowing five runs on five hits with seven walks.
Royals' starter Lenny DiNardo allowed eight runs on 10 hits with six walks in five innings.
Yasuhiko Yabuta (2-1) got the win in relief for the Royals. Joakim Soria earned his 27th save.
Daniel Bard (2-2) took the loss for Boston.
'SNL': 'Anchorman 2' cast, One Direction sing 'Afternoon Delight' [VIDEO]
Reindeer recovered after escaping from Santa during lighting ceremony