"The first goal on the power play was a big one," Eric Staal said. "Then to have Jordan tie it right away was also huge. And our third period was strong. This was key for us."
Sanguinetti's goal was an NHL-leading 34th in the third period for Carolina.
The Islanders (8-10-1) continued to struggle at home, where they are an NHL-worst 2-7.
"I don't know why we play differently at home," Islanders coach Jack Capuano said. "I can't understand why we were so flat in the third period."
Moulson opened the scoring with his 10th goal of the season off a pass from behind the net from Brad Boyes. Tavares, who assisted on the goal, has been on the ice for 70 consecutive goals by his linemate, dating to Nov. 17, 2010.
Tavares scored his 13th goal — sharing the league lead with Tampa Bay's Steven Stamkos — off an assist from Moulson at 12:25. The speedy center swept down the left side before whipping the puck over the left shoulder of goalie Cam Ward.
Tavares and Moulson have combined for 23 goals, the most of any NHL teammates this season.
The 22-year-old Poulin was 15-14-3 with a 3.22 goals against average in 32 games for Bridgeport. He was recalled to replace Rick DiPietro, who was demoted after an 0-3 start.
Poulin made numerous strong saves among his 14 stops in the first period, including glove saves on Jussi Jokinen and Ryan Murphy. His last two NHL wins were against Carolina — a 5-2 victory last Jan. 31 in Raleigh and a 4-3 home win last Feb. 18.
NOTES: The game opened a seven-game homestand for the Islanders, their sixth in team history. ... The Islanders will visit Raleigh on April 23 to complete the season series. ... Defenseman Radek Martinek made his season debut for the Islanders. It was his first NHL appearance since Oct. 21, 2011, when he sustained a concussion while playing for Columbus. ... Moulson, who played in his 265th straight game for the Islanders, hasn't missed a game since joining them before the 2009-10 season.