SEATTLE -- It's been a tough year at times for Yovani Gallardo, but the veteran right-hander outdueled Mets ace Jacob deGrom on Saturday as the Mariners evened the Interleague series with a 3-2 victory at Safeco Field.

Gallardo picked up his first win since being inserted back into Seattle's rotation last week as he gave up five hits and one run over 5 2/3 innings to put his record at 5-7 with a 5.34 ERA. The Mariners' bullpen did the rest as Seattle (52-53) kept pace in the Wild Card race, four games back of the red-hot Royals for the final American League berth.

"Going in you know it's going to be a low-scoring game, and you've got to out-pitch them," said Mariners manager Scott Servais. "And we out-pitched them today."

deGrom saw his streak of consecutive wins snapped at eight, one shy of tying Frank Viola's club record, as he got nicked for five hits and three runs (two earned) over six innings. deGrom struck out 10, but saw his record dip to 12-4 with a 3.29 ERA with his first loss since May 31.

"I definitely want to win every time I go out there," deGrom said. "Today, I wasn't able to get the win. I needed to make a big pitch, and wasn't able to do it. They were able to drive in a couple runs, and their guys did a good job of keeping us from scoring. That's how it went."

Dyson delivers off deGrom: Jarrod Dyson's two-run, bases-loaded single off deGrom was the big blow in a second-inning rally that all culminated after the Mets' ace was hit in the left shin by a 106-mph line drive by Nelson Cruz. Kyle Seager followed with a double to put runners on second and third. After striking out Danny Valencia, deGrom then hit Mitch Haniger in the face with a 95-mph fastball in a scary incident that knocked Haniger out of the game with a lacerated lip and loaded the bases for Dyson, who came through with his base hit to center.

"You never want to hit anybody in the face," deGrom said. "It's not easy to pitch after you do that. I was trying to go inside there and it just sailed on me. I definitely feel bad about it. It was not easy to stay out there and re-concentrate."

Living on the edge: The Mets mounted serious challenges in the fifth, sixth and seventh innings, but came away with just one run as Mariners' pitchers stranded six runners. Gallardo had two on and no out in the fifth and was down 3-1 in the count to Jose Reyes when he got a borderline called strike and then induced a popout. Gallardo retired the next two Mets on fly balls to keep a 3-0 lead. In the sixth, Tony Zych replaced Gallardo with two on and proceeded to walk two batters to force in a run before getting Reyes to fly out to center. And lefty Marc Rzepczynski worked out of a two-on, no-out jam in the seventh with a double-play grounder by Asdrubal Cabrera and strikeout of Jay Bruce.

"That was huge, especially in that situation," Gallardo said of the 3-1 strike to Reyes that turned the inning around. "You have to attack the strike zone. I was able to throw that fastball inside and go from there. Earlier I was trying to aim a little and not attack the zone like I was in previous innings."

"I thought it was a ball," Reyes said. "But that happens. They're not perfect."