Haniger dashed home to score the go-ahead run on a grounder in the eighth inning, then made a diving catch for the final out that gave the Mariners a 3-2 win over the Yankees.
Haniger started the eighth with a walk off reliever Dellin Betances (4-5) before stealing second by reaching in with his right hand at the last second.
"I was just trying to miss the tag," Haniger said. "I knew if I went in with my left hand it would have been a lot closer."
Haniger reached third on Jean Segura's sacrifice bunt. With the infield in, Robinson Cano hit a broken-bat roller up the middle. Haniger was running on contact and shortstop Adeiny Hechavarria made a quick throw home, but Haniger just got his right hand on the plate before the tag from catcher Austin Romine.
"I just wanted to get as low as possible to avoid the tag by making the catcher reach as far as possible," Haniger said. "I take pride in every facet of the game. I had some great coaches coming up that taught me how to play the game right."
Edwin Diaz pitched the ninth for his 54th save and 27th one-run save, both the most in baseball. But it took a diving grab by Haniger on Giancarlo Stanton's fly ball to stop a possible New York rally.
Andrew McCutchen was hit by a pitch with two outs before Haniger's catch off Stanton's broken-bat fly to shallow right.
"I had to play real deep to respect his power," Haniger said. "It kind of blooped in there and hauled over as fast as I could and made the play. Once I got to full speed, I felt I was going to get it."
Haniger, an All-Star for the first time this year, has 24 homers and 85 RBI this season.
"Mitch is a very good all-around player," manager Scott Servais said. "We all know about his power, but his defense and the way he runs the bases makes him a heck of a player."
The loss kept the Yankees from sweeping the three-game series and leaves New York only 2 1/2 games ahead of Oakland for the league's top wild-card spot.
Miguel Andujar's double down the left field line gave the Yankees a 1-0 lead in the first inning after Stanton hit a towering pop to shallow left that dropped for a double.
The Yankees loaded the bases with three singles to start the fourth against starter Erasmo Ramirez, but only score one run off a walk to McCutchen, tying the game at 2-2.
"Disappointing, no question," Yankees manager Aaron Boone said. "That fourth inning, had them on the ropes there and a chance to do some damage, and just couldn't get that hit to push us over. It was a chance to have a great weekend. Obviously, a tough one here."
Brett Gardner was ejected after his at-bat in the ninth inning when he had a heated argument with plate umpire Jeremie Rehak after he struck out. Garner didn't like the called second strike.
"I just felt like that was a big pitch. My at-bat went from being 3-0 to being 2-1 against a guy that throws 100," Gardner said. "I let my emotions get the best of me and was frustrated a little bit, and obviously, I said too much."
Yankees: Andujar was the DH Sunday after leaving the game Saturday night in the ninth inning when he was hit by a pitch on the right forearm. ... SS Didi Gregorius, who came off the 10-day DL Friday, did not start after starting Saturday night before leaving the game in the seventh inning. He pinch hit in the ninth and grounded out. Boone has said they plan to bring Gregorius back gradually.
Mariners: Cano started at second base after leaving Saturday's night's game in the ninth when he was hit by a pitch on the left foot. ... Servais wasn't sure when RHP Felix Hernandez will make his next start after leaving Saturday's game in the fifth inning because of tightness in his right hamstring. "We'll see where we slot him back in," Servais said. "He might need an extra day. We'll wait to pencil him in for his next start."
Yankees: The road trip continues with a three-game series at Minnesota. LHP J.A. Happ (14-6, 3.90 ERA) will make his eighth start with New York on Monday and his 28th of the season. Happ is 5-0 with a 3.10 ERA in seven starts with the Yankees.
Mariners: After a day off Monday, Seattle ends the homestand with a two-game series against the Padres that starts Tuesday. LHP Marco Gonzales (12-9, 4.32 ERA) is expected to come off the 10-day DL (neck strain) and make his 26th start to the season Tuesday. Gonzales lost four consecutive starts before going on the DL Aug. 27, allowing 23 earned runs over 20 innings.
More AP MLB: https://apnews.com/tag/MLB and https://twitter.com/AP-Sports
NL East Stock Watch: Which team is having the best winter?
The division's four contenders have made the biggest moves to restock their rosters, but they're far from finished.
Schefter: Murray will go in 1st round
Adam Schefter joins SportsCenter to analyze Kyler Murray's decision to declare for the NFL draft.
Kyler Murray declares for 2019 NFL draft: Answering questions about what's next
Murray has declared for the NFL draft. Can he still play baseball? What are the key dates to pay attention to? Here's what you need to know.
Derek Holland re-signs with Giants on one-year deal
Derek Holland, who made 30 starts with the Giants last season, re-signed with San Francisco on a one-year deal, the team announced.
How Bryce Harper and Manny Machado measure up among baseball's best
This winter's free-agent duo will be very rich pretty soon, but where do Harper and Machado rank among the best players in baseball right now?
Why next 30 days will be busiest of MLB offseason
Spring training is only a month away, and history tells us free agents don't perform as well if they miss time in camp.