PHILADELPHIA – Cole Hamels pitched eight impressive innings, Jimmy Rollins drove in the go-ahead run with a sacrifice fly and the Philadelphia Phillies beat the Colorado Rockies 2-1 to snap a four-game losing streak Wednesday night.

Hamels (5-2) allowed one run and five hits, striking out eight for his first career win against the Rockies. He entered 0-3 with an 8.22 ERA in three career starts against Colorado, including two in the postseason.

The NL East-leading Phillies had just seven runs and 17 hits in the previous four games. They got just enough this time.

“I’m concerned about it,” Manager Charlie Manuel said of the team’s hitting woes. “But with the pitching we have, we’ll keep chipping away and we’re going to improve our offense. We’re gonna get it done.”

PIRATES 5, REDS 0: Charlie Morton threw a five-hitter for his second career shutout, and Pedro Alvarez hit a three-run homer for Pittsburgh at Cincinnati, snapping a six-game losing streak.

Morton (5-1) stymied Cincinnati again. He threw a five-hitter April 15 for a 6-1 victory at Great American Ball Park, coming within one out of his second career shutout.

METS 3, NATIONALS 0: Jonathon Niese pitched seven sharp innings, some of them in heavy rain, and Justin Turner added to his surprising tear with a two-run double that lifted New York at home.

With maybe a few thousand hardy souls in the stands on another wet night at Citi Field, the Mets’ depleted lineup scratched out enough offense to help Niese (3-4) win his second straight start.

CUBS 7, MARLINS 5: Marlon Byrd hit a tie-breaking solo homer in the eighth inning, and Chicago won at Miami to break a three-game losing streak.

Reed Johnson hit his third career pinch-hit home run for the Cubs to make it 5-5 in the sixth. They took the lead on Byrd’s second homer against Edward Mujica (4-2) leading off the eighth.

CARDINALS 5, ASTROS 1: Kyle Lohse threw eight dominant innings to beat Houston for the second time in less than a month, leading St. Louis to a victory at home.

AMERICAN LEAGUE

RAYS 6, BLUE JAYS 5: Matt Joyce homered, Elliot Johnson had three RBI and visiting Tampa Bay snapped Toronto’s winning streak at six games.

WHITE SOX 1, INDIANS 0: Jake Peavy pitched a three-hitter in his home debut this season, outdueling Justin Masterson and making Adam Dunn’s sacrifice fly in the first inning stand up for Chicago at home.

YANKEES 4, ORIOLES 1: Robinson Cano doubled in two runs in the 15th inning, and New York won at Baltimore after Mariano Rivera blew a one-run lead in the ninth.

RANGERS 5, ROYALS 4: Adrian Beltre hit a two-run single off Jeremy Jeffress in the 11th inning, lifting Texas at Kansas City, Mo.