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.
That's a really tough thing to play through; when you finally are thrown out there, the game is fast, intense, every single play matters, you've got to find a way to play through that and make smart plays. So it's a huge testament to [Vermette] and some other individuals in our locker room that are putting their own ego, their own wants and needs aside, and are ready for those opportunities when they do come.
— Blackhawks captain Jonathan Toews on teammate Antoine Vermette, who returned from being a healthy scratch in Game 3 to score the double-overtime winner in Game 4