Thompson has 25 goals this season, and 20 points (11 goals, nine assists) in his past eight games. He and Connor McDavid of the Edmonton Oilers are the NHL's first two 25-goal scorers this season.
"He's so hot right now, everything he touches [goes in]," Arizona coach Andre Tourigny said. "His teammates try to find him all the time, whenever he's open, the puck is going to him. You cannot make one mistake, because they always know where he is."
Jeff Skinner scored twice and had an assist in his return from a three-game suspension, and Alex Tuch had three assists for the Sabres (15-14-2), who have won three in a row. Craig Anderson made 29 saves.
"Any time you're away from the game, watching, it gives you that little bit of hunger to get back in there," Thompson said of Skinner, who was suspended for an illegal cross-check on Pittsburgh Penguins forward Jake Guentzel on Dec. 9. "I know he was itching to get in there and he had a great game."
Barrett Hayton and Shayne Gostisbehere scored for the Coyotes (10-15-4), who were playing the second of a back to back after defeating the New York Islanders 5-4 on Friday. Connor Ingram made 38 saves.
"We were keeping it simple," Thompson said. "We knew they'd played last night, and I think our game plan was just to keep it simple and wear them down."
Thompson's power-play goal at 10:07 of the third period put Buffalo ahead 3-2. Ingram went down to stop Dylan Cozens' shot and, after a scramble in which the puck was briefly covered up by Arizona defenseman J.J. Moser, Thompson scored on a wrist shot from the left face-off circle.
"It's a big-time [play] in the game," Thompson said. "We knew it was a big power play. [Ingram] made a big stop on 'Cuzzy,' but we got everyone digging for it and it pops loose, and I'm sitting right off to the side. It was a big one for us. It was good to get the lead there and just close it out."