Dylan Strome, Richard Panik and Max Domi also scored for Arizona, which was playing the first game of a six-game, 10-day road trip that will cover 5,862 miles.
The victory, dubbed the Battle of the Basement, moved the Coyotes (25-37-11, 61 points) out of a last-place tie with Vancouver in the Pacific Division and three points ahead of the Sabres (23-38-12, 58), who have the fewest points in the NHL.
Clayton Keller added two assists for Arizona, breaking the Coyotes' records for most assists (35) and points (55) in a season by a rookie. Arizona, which began the season 0-10-1, improved to 13-5-2 in its past 20 games.
Jordan Nolan scored the lone goal for Buffalo. Sabres goalie Chad Johnson, hit in the mask by a Brendan Perlini shot midway through the first period, stopped 13 of 15 shots before being replaced by Linus Ullmark six minutes into the second period. Ullmark finished with 12 saves.
Arizona converted both of its power-play chances in the first period en route to a 2-1 lead. Strome, the third overall pick of the 2015 NHL Draft who was recalled from Tucson of the AHL prior to the game, banked a rebound off the back of the leg of Johnson to give the Coyotes a 1-0 lead at the 3:38 mark.
Buffalo tied it eight minutes later when Nolan put in a rebound of an Evan Rodrigues shot into a wide open right side of the net for his third goal of the season and first goal in 41 games.
Stepan then put the Coyotes back ahead 2-1 when his wrist shot from the top of the right circle hit the stick of Sabres' center Scott Wilson and scooted past Johnson's stick-side at 17:44.
Panik upped Arizona's lead to 3-1 in the third period. Cutting in front of the crease, he put a rebound of a Keller shot through Ullmark's legs. Domi then sealed it with an empty-net goal with 9.5 seconds remaining.
--Field Level Media
Arizona | Buffalo | |
Derek Stepan 2 | Points | Jordan Nolan 1 |
Derek Stepan 1 | Goals | Jordan Nolan 1 |
Clayton Keller 2 | Assists | Nathan Beaulieu 1 |
Derek Stepan 1 | Power Play Goals | N/A |
N/A | Short Handed Goals | N/A |
Antti Raanta .967 | Save Percentage | Linus Ullmark .923 |
Antti Raanta 29 | Saves | Chad Johnson 13 |
Team | Shots | Goals | Power Play | Penalty Kill | Penalty Mins | Face Offs Won |
Arizona | 29 | 4 | 2-3 | 4-4 | 10 | 28 |
Buffalo | 30 | 1 | 0-4 | 1-3 | 8 | 43 |