Chris Omeara, Associated Press
Royals' John Buck, right, celebrates with teammates Esteban Germain, left, and Ross Gload.

ST. PETERSBURG, Fla. — A stroke of good luck by Carlos Pena wasn't quite enough for the Tampa Bay Rays.

After Pena hit a tying solo homer off All-Star closer Joakim Soria in the ninth, the Royals struck back with 10th-inning home runs by John Buck and Mike Aviles for a 7-4 win Monday.

The loss snapped the Rays' seven-game winning streak. Tampa Bay, with the major's best record at 55-33, lost for the second time in the last 13 games. The Rays went 1-for-19 with runners in scoring position.

"Today was a tough day for us," Pena said. "We couldn't capitalize."

Pena nearly salvaged a bad day with his home run off Soria, who blew his second second save in 25 chances.

"You know it's going to happen at some point in time," Royals manager Trey Hillman said. "That fastball caught just a little too much of the plate. It was kind of right in Pena's nitro zone and he got it out of the ballpark."

Billy Butler reached second to start the 10th on a throwing error by Rays third baseman Evan Longoria. Pinch runner Esteban German advanced to third on Mark Teahen's grounder. After Dan Wheeler (2-4) intentionally walked Ross Gload, Buck lined his fourth homer of the season down the left-field line. Two pitches later, Aviles homered to make it 7-3.

"I hit it good and the way it was hooking, it made me a little nervous, but it stayed true just enough," said former Taylorsville High player Buck, who turned 28 on Monday.

"That's what happens when you miss your spots," Wheeler said. "I didn't make my pitches and it cost us the game."

Soria (1-1) also allowed Eric Hinske's solo homer in the bottom of the 10th.

Aviles had three hits and David DeJesus had three hits and two RBIs for the Royals, who avoided being swept in the four-game series.

"It was good to see us battle back," Hillman said.

American League

RED SOX 1, TWINS 0: At Boston, Manny Ramirez hit a run-scoring single in the eighth to lift Boston in a pitching duel between Daisuke Matsuzaka and Minnesota's Scott Baker. Dustin Pedroia extended his career-high hitting streak to 15 games with a double on the first pitch from reliever Brian Bass (3-3) in the eighth. Pedroia advanced on a groundout and Ramirez then lined a single to right through a drawn-in infield.

ANGELS 9, RANGERS 6: At Arlington, Texas, Torii Hunter homered twice, the first capping a six-run second inning, and Los Angeles held on. Vladimir Guerrero, Jeff Mathis and Hunter homered in the big second inning that gave the Angels an 8-0 lead. All three were off Rangers starter Luis Mendoza (1-3), who allowed eight runs in 1 1-3 innings. Hunter had an RBI single in the first and homered in the seventh.

ATHLETICS 4, MARINERS 3: At Oakland, Calif., Wes Bankston hit his first career home run, Dana Eveland won his third straight decision and Oakland ended an eight-game home losing streak. Bankston, called up from Triple-A on Wednesday when the A's placed shortstop Bobby Crosby on the disabled list, hit a two-run homer off Seattle starter Jarrod Washburn in the fifth.

National League

DODGERS 3, BRAVES 0: At Los Angeles, Hiroki Kuroda took a perfect game into the eighth inning and settled for a one-hitter, leading Los Angeles to a shutout. The win moved the Dodgers in a tie for first in the NL West with idle Arizona. Kuroda (5-6) retired the first 21 batters before Mark Teixeira lined the right-hander's 70th pitch into the right field corner for a double leading off the eighth. He was the only Atlanta baserunner. Kuroda was attempting to become the first Dodger to throw a no-hitter since countryman Hideo Nomo on Sept. 17, 1996, 9-0 at Colorado. Kuroda threw 91 pitches and struck out six in a game that lasted just 2 hours and 3 minutes.

MARLINS 3, PADRES 1: At San Diego, Jorge Cantu hit a two-run home run off Greg Maddux, which was enough to carry Ricky Nolasco and Florida to the victory. Nolasco (10-4) won his fifth straight decision, holding San Diego to one run and five hits in eight innings. He struck out seven and walked none.

ROCKIES 4, BREWERS 3: At Milwaukee, Ubaldo Jimenez allowed three hits over seven innings, spoiling a daylong welcome party for CC Sabathia. Jimenez (4-8) has won three of his last four starts after beginning the season 1-7. All-Star Matt Holliday hit his 14th home run — and fourth in four games — for Colorado, which has won six of its last seven.

PIRATES 10, ASTROS 7: At Pittsburgh, Nate McLouth and Ryan Doumit both homered and were among 10 Pirates as Pittsburgh snapped a three-game losing streak. Adam LaRoche reached base four times, scored twice and drove in a run as eight Pirates had RBIs. Jason Bay went 2-for-3 with two walks and two runs, and Xavier Nady had two hits and two RBIs for Pittsburgh, which scored more runs during the first three innings Monday than they did in being swept in three games in Milwaukee over the weekend.

METS 10, PHILLIES 9: At Philadelphia, Pedro Martinez pitched into the sixth inning then watched New York give back nearly all of a nine-run lead before holding on.