KANSAS CITY, Mo. - Jeff Francoeur drove in two runs, helping Luke Hochevar win for the first time in seven starts, and the Kansas City Royals survived Joakim Soria's shaky ninth to beat the Toronto Blue Jays 3-2 on Thursday.

Soria, reclaiming the closer role he lost May 30 after back-to-back blown saves, loaded the bases in the ninth but got his eighth save in 13 opportunities.

Edwin Encarnacion and Rajai Davis hit one-out singles off the two-time all-star, then Mike McCoy, after being down 0-2, drew his fourth walk of the day to load the bases with two out. But Soria got Corey Patterson on an infield popup, giving the Royals their fifth win in 19 games.

Hochevar (4-6) allowed two runs in the fourth but nothing else in seven innings. The right-hander gave up six hits, walked three and struck out three for his first win in seven starts since May 1. He did not give up a home run for the fourth straight start after allowing 13 in his first 10 outings.

Ricky Romero (5-6) pitched an eight-inning complete game for Toronto, allowing three runs on eight hits, with two walks and four strikeouts.

Alcides Escobar singled in the third and scored the first run on rookie Eric Hosmer's soft single into right. Hosmer has hit safely in 10 of his last 11 games.

Melky Cabrera then reached on a fielder's choice and Francoeur rifled a two-run single into right as the Royals completed a season-high 11-game homestand with a 4-7 record and kept the Blue Jays from winning a series in Kansas City for the first time since 2003.

Francoeur was out at the plate on a strong throw from Jose Bautista after Billy Butler singled into right.

In the Blue Jays' second, Bautista reached on a fielder's choice, Adam Lind singled and J.P. Arencibia tripled into left field. Mitch Maier made a leap for the ball, but it hit the wall and bounced back toward centre field as Lind and Bautista scored.

Aaron Hill walked, but Hochevar retired Encarnacion on a fly ball to end the inning.

The Blue Jays had runners at second and third with two out in the eighth. but Aaron Crow coaxed a grounder out of Arencibia.

Lind was 3 for 4, all singles.

NOTES: Bautista has reached safely in 52 of his 55 games. ... Maier started in left field and led off for the Royals for the first time this year. ... Royals have played 16 games in a stretch of 20 games in 20 days. ... Mike Aviles was caught too far off first base in the second inning and thrown out by Romero. ... A victory would have put Toronto three games over .500 for the first time since April 8.