Updated

Torii Hunter and Jeff Mathis homered, helping Jered Weaver and the Los Angeles Angels beat the Kansas City Royals 4-2 Thursday in a chilly season opener.

Weaver allowed two harmless singles to Melky Cabrera over 6 1-3 innings, improving to 3-0 in his last four starts against Kansas City. The 2010 major league strikeout leader fanned six and walked two as the Angels won their opener for the seventh time in the last eight years.

Hunter and Mathis, on his 28th birthday, hit solo shots off Luke Hochevar, who pitched 5 2-3 innings and gave up four runs in his first opening-day start.

Kansas City had a chance to go in front in the eighth and ninth, but the Angels got out of it both times.

Mike Aviles' leadoff drive off Kevin Jepsen trimmed Los Angeles' lead to 4-2 in the eighth. The Royals went on to load the bases on three walks, but Michael Kohn, the Angels' fifth pitcher, struck out Jeff Francoeur and retired Alcides Escobar on a fly ball to end the inning.

With runners at the corners and two out in the ninth, Alex Gordon barely missed a home run before Fernando Rodney struck him out for the save. Gordon was 0 for 5 with three strikeouts and left five runners.

Weaver (1-0) had faced the minimum until Cabrera flared a single into left with one out in the fourth. The right-hander, the Angels' pitcher of the year the past two seasons, then retired six of the next seven, allowing only one walk, before Cabrera singled up the middle with two out in the sixth.

Hunter, on a 3-2 pitch, cranked a 446-foot shot over the center-field fence leading off the fourth. It was his 27th homer against the Royals, the most he's hit off any club. Vernon Wells and Erick Aybar followed with back-to-back doubles.

The Royals committed three errors. After Mathis homered in the sixth, Peter Bourjos bunted and wound up at third on throwing errors by Hochevar and second baseman Chris Getz. Maicer Izturis ended up driving him in with a single.

Hisanori Takahashi replaced Weaver and allowed Francoeur's two-out drive in the seventh.

Third baseman Aviles was booed when he ran toward the left-field dugout chasing a high pop off the bat of Bobby Abreu but let it fall in. It was called a no-play, but boos echoed again when Abreu then singled with two out in the fifth. But Aviles made a nice play on Wells' grounder to end the inning.

Hochevar (0-1) also allowed nine hits, struck out five and walked none. One of the runs on his line was unearned.

NOTES: Royals relievers have switched sides. Since Kauffman Stadium opened in 1973, the home team bullpen had always been behind right field, the visitors' behind left. But now they've switched, giving KC dugout a better view of what's happening in their pen. ... Mike Sweeney, who signed a one-day contract this month and retired as a Royal, threw out the first pitch. ... The Royals called it a sellout but there were quite a few unoccupied seats scattered around Kauffman Stadium. ... The Angels improved to 1-3 in March games.