KANSAS CITY — James Shields earned his first home win in more than three months, Alex Gordon homered and the Kansas City Royals beat the Boston Red Sox 4-3 on Sunday.
The Royals improved to 18-5 since the All-Star break, winning seven consecutive series.
Shields (7-8), who had not won at Kauffman Stadium since an April 30 victory over Tampa Bay, limited the Red Sox to three runs and seven hits over seven innings. He struck out five and walked three.
Gordon hit a 2-2 pitch from John Lackey (7-10) out to right in the third inning for his third homer in five games.
Lackey, who is 0-4 in his past five starts, walked David Lough and Eric Hosmer to lead off the first. Gordon's two-out single scored Lough to tie it at 1.
Shane Victorino scored Boston's first run when he doubled in the first, swiped third and came home on catcher Salvador Perez's errant pickoff throw.
The Royals scored two runs in the third, with Jarrod Dyson and Lough delivering RBI singles. Dyson's hit drove home Mike Moustakas, who doubled to start the inning. Dyson stole second and scored on Lough's flare to shallow right.
After a rocky start, Lackey lasted seven innings, giving up four runs on seven hits and two walks, while striking out five.
Ryan Lavarnway's two-out single in the sixth scored Daniel Nava and Stephen Drew, trimming the Kansas City lead to 4-3. Drew went 2 for 4 and is hitting .422 in his season-high, 12-game hitting streak.
Royals relievers Tim Collins, Aaron Crow and Greg Holland, who logged his 32nd save in 34 opportunities, worked two scoreless innings to protect the one-run lead. The bullpen has allowed one run in 20 innings on this homestand.