– The Associated Press

PITTSBURGH – Pirates rookie Neil Walker drove in three runs and last-place Pittsburgh prevented Adam Wainwright from becoming the majors’ first 18-game winner, holding off a ninth-inning rally to beat St. Louis 4-3 on Tuesday night.

St. Louis had won three in a row since dropping five straight, but couldn’t pick up any ground on NL Central leader Cincinnati or wild-card leader Philadelphia.

The Cardinals, down 4-2 when the ninth started, loaded the bases with one out and a run in on Jon Jay’s single, but Evan Meek got Matt Holliday and Felipe Lopez to pop up in succession. Meek converted only his second save in eight opportunities.

Wainwright (17-8) took a 2-0 lead into the sixth but couldn’t hold it while failing for the second straight start to win his 18th. He lost 3-2 to Milwaukee on Aug. 18.

TIGERS 9, ROYALS 1: Rick Porcello allowed two hits over seven shutout innings and Ryan Raburn homered to lead the host Tigers.

Porcello (6-11) retired the first 12 batters in order before Billy Butler singled leading off the fifth inning. Porcello then retired the next three batters. He walked one and struck out four.

Daniel Schlereth tossed a hitless eighth and Ryan Perry pitched the ninth.

Kila Ka’aihue homered for Kansas City, which was held to three hits.

ATHLETICS 5, INDIANS 0: Gio Gonzalez extended Oakland’s strong streak of pitching with seven solid innings for a road win.

Jeff Larish had a two-run homer and Coco Crisp a solo shot off Fausto Carmona (11-12) as Oakland snapped its streak without multiple homers at 26 games, the longest since a team-record 31 games in 1978. Jack Cust hit a two-run homer off reliever Tony Sipp in the seventh to make it 5-0.

Gonzalez (11-8) gave up five hits over seven innings, becoming the 22nd consecutive Oakland starter to work at least six innings. The Athletics’ staff has allowed five runs or fewer in all those games, the longest streak by an AL team since the 1989 California Angels.

CUBS 5, NATIONALS 4: Alfonso Soriano and Tyler Colvin homered, Carlos Zambrano continued his resurgence since rejoining the Chicago rotation and the Cubs won on the road.

Zambrano (5-6) yielded a run on five hits over 71/3 innings, his longest outing of the year. He walked one and struck out eight.

YANKEES 11, BLUE JAYS 5: Curtis Granderson hit a three-run homer, Marcus Thames added a two-run drive and three other Yankees hit solo blasts as New York pounded the host Blue Jays.

Derek Jeter, Jorge Posada and Mark Teixeira also connected as the Yankees won for the sixth time in eight games.

METS 6, MARLINS 5: Luis Castillo hit a game-ending single with two outs in the ninth inning, lifting the host Mets. Castillo, a late-inning replacement, looped a hit to the opposite field off Will Ohman (0-2) to score Ike Davis and help the Mets move into third place in the NL East.

RANGERS 4, TWINS 3: Josh Hamilton hit his 29th home run, Michael Young made up for two errors with the tiebreaking RBI single and the Rangers took a home win in a matchup of division leaders. Young’s two-out single in the seventh inning off Carl Pavano (15-9) snapped a 3-all tie and put the AL West leaders ahead to stay and ruined the right-hander’s sixth complete game of the season.

WHITE SOX 7, ORIOLES 5: Gordon Beckham hit a go-ahead three-run home run in the seventh, Gavin Floyd pitched seven strong innings and the White Sox won at home.

DODGERS 5, BREWERS 3: Rod Barajas made a smashing debut for the Dodgers with a three-run homer and Ted Lilly won his fifth straight as Los Angeles won on the road.

ROCKIES 5, BRAVES 2: Jorge De La Rosa pitched seven effective innings and Carlos Gonzalez hit his 26th home run to lead host Colorado.