The Maple Leafs (45-23-7), who trail the Boston Bruins by seven points for second place in the Atlantic Division, had not lost at home since Jan. 22. The 13-game streak was the longest in the NHL this season.
"As a division rival, you're playing in Toronto, they're an Original Six team, there's a lot of things that go into it, but I just like that we stuck with it the whole game," Sabres coach Phil Housley said. "We played 60 minutes. There were times where we didn't like the way we played, but we did correct it and right the ship in the third period."
WATCH: [All Sabres vs. Maple Leafs highlights]
Jack Eichel scored two goals, Zemgus Girgensons had two assists, and Chad Johnson made 39 saves for the Sabres (24-40-12), who ended a four-game losing streak and have been eliminated from Stanley Cup Playoff contention.
"It goes to show if we do it the right way and all compete together, there were times where they had us on our heels but we figured out a way to get a win, and that's what matters," Eichel said.
Johnson did not find out he would start until 4:15 p.m. ET. Linus Ullmark was the scheduled starter but sustained an upper-body injury during the morning skate and is day to day.
"It's a little bit, I wouldn't say panic, but I always like to prepare more," Johnson said. "I love to go through the routine, but it's just part of the game. I've played a lot of games here, played a lot of hockey, so you just kind of rely on that experience, get your mind ready and play. Obviously, I don't like that situation knowing that late, but that's just what happens."
Nazem Kadri and Patrick Marleau scored, and Frederik Andersen made 24 saves for the Maple Leafs (45-24-7), who are 6-2-0 in their past eight games.