Updated

Jonathan Villar ripped a tiebreaking two-run single as part of a four-run ninth inning, helping the Houston Astros rally past the Seattle Mariners for a 6-4 victory on Monday in the opener of three- game set at Safeco Field.

Abraham Almonte laced a two-run homer -- the first of his career -- in the seventh to put the Mariners up 3-2, but the Astros broke through against Seattle closer Danny Farquhar (0-3) in the ninth.

Marc Krauss and Carlos Corporan worked back-to-back one-out walks before Jimmy Paredes followed with a single to right.

"The two walks, that was the difference there," said Seattle manager Eric Wedge.

Jake Elmore, who entered as a pinch-runner for Krauss, scored easily on the play, while Marwin Gonzalez, pinch-running for Corporan, moved to third and Paredes advanced to second on Almonte's throwing error in right.

After fouling off a pair of 2-2 pitches, Villar stroked a base hit up the middle to plate both runners for a 5-3 lead.

Bobby LaFromboise took over on the mound and served up a single to Jose Altuve before Trevor Crowe lifted a fly ball into foul territory down the first-base line.

Justin Smoak caught the popout to retire Crowe and fired to the plate in an attempt to get Villar tagging from third, but his throw hit Crowe, allowing Villar to score for a 6-3 lead.

"We strung together good at-bat after good at-bat. That was really good to see," said Houston manager Bo Porter on his team's ninth inning play.

Josh Fields served up a one-out solo homer to Brad Miller in the ninth, but retired the final two Mariners in order to secure his fourth save of the season and snap Houston's three-game losing streak.

Kevin Chapman (1-1) picked up the win after spinning a scoreless eighth.

Seattle struck first on Kendrys Morales' run-scoring fielder's choice groundout in the first, but the Astros answered with a run in each of the next two frames to seize control.

Paredes plated a run in the second with a sacrifice fly before Altuve opened the third with a double and scored when Crowe followed with a two-bagger of his own to make it 2-1 Houston.

Game Notes

Houston starter Jarred Cosart was charged for an unearned run on two hits and six walks over five frames ... Seattle starter Taijuan Walker struck out eight and allowed two runs on five hits and a walk over five innings ... Houston went 3-for-15 with runners in scoring position and left seven men on base.