Marco Gonzales pitched a two-hitter, J.P. Crawford and Jake Fraley homered and the Seattle Mariners beat the Texas Rangers 3-1 on Thursday.

Gonzales (4-5) allowed Charlie Culberson's homer in the second inning, followed by Jason Martin's single. He retired Andy Ibanez on a groundout, then faced the minimum number of batters over the final seven innings — helped by a double play that followed his only walk of the game.

CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM

The left-hander struck out pinch-hitter Jonah Heim in an eight-pitch at-bat to conclude his 108-pitch gem, getting a standing ovation from the crowd.

Gonzales, who hasn't lost since July 3, struck out nine while helping the Mariners to their 28th come-from-behind win. Each of Seattle's last nine games has been decided by two runs or fewer.

The Rangers have lost seven of eight overall and 16 of their last 17 on the road.

Jarred Kelenic tied the game 1-all with a sacrifice fly in the fourth, his 12th RBI in his last 15 games. Crawford homered into the second deck in right field with two outs in the fifth. And Fraley made it 3-1 in the seventh with a two-out homer off starter Mike Foltynewicz (2-11), who had his third straight solid outing but still hasn't won since June.

Foltynewicz allowed three runs and six hits in seven innings.

CLICK HERE TO GET THE FOX NEWS APP

TRAINER’S ROOM

Mariners: Right-handed reliever Paul Sewald was placed on the paternity list and will miss up to three days. Seattle recalled RHP Yohan Ramirez from Triple-A Tacoma.

UP NEXT

Rangers: Dane Dunning (5-7, 4.07 ERA) returns from the injured list Friday to open a home series against Oakland.

Mariners: Welcome Toronto for a three-game series. Chris Flexen (10-5, 3.81) starts the opener.