J.P. Crawford singled home the winning run after Bryan Abreu walked the bases loaded with one out in the ninth inning, and the Seattle Mariners rallied past the skidding Houston Astros 8-7.