Semin tied it at 2 on a power play with 8:12 left, and Tlusty scored with 6:17 to go.
Jeff Skinner had a first-period goal — his 26th — to help Carolina win its second in a row after losing seven of eight. Nathan Gerbe had an empty-net goal with a second left.
Cam Ward made 21 saves, making his second consecutive start after backstopping the Hurricanes to a 3-1 victory over the New York Rangers on Tuesday night.
Tyler Ennis scored on a penalty shot and Drew Stafford added a goal for Buffalo. Michal Neuvirth made a season-high 51 saves in his second start for the Sabres since being acquired in a trade with Washington on March 5.
We've got to find a way to win a game. He's played well in the minors, now he gets his opportunity. We tried [with Jonathan Bernier]. The way I look at it, you get opportunities and you make the most of it. That's what [James Reimer] did. Now another opportunity is here and Sparks ... you gotta grab it. Is he ready? We'll find out.
— Maple Leafs coach Mike Babcock to the Toronto Star on recalling goalie Garret Sparks from the AHL to start Monday in his NHL debut
TONIGHT ON NHL NETWORK
5:00 ET: NHL Live Powered by Constellation 7:00 ET: NHL Tonight