WATCH: [All Ducks vs. Sabres highlights]
Henrique received a pass from Ondrej Kase and took a shot from the high slot that deflected off the stick of Sabres defenseman Rasmus Ristolainen and beat Robin Lehner over his right shoulder.
"I scored one like that in the past where I had a little bit of space at the line so I just tried to pull it around the defenseman and I obviously got a good shot off there and found the corner," Henrique said of his 16th goal. "It was certainly a great feeling when it went in."
Ryan Miller made 30 saves for the Ducks (26-19-10), who came back from down a goal twice to end a three-game losing streak (0-2-1).
"I thought we were creative in bringing guys to us and moving the puck and getting the puck back to the net," Miller said. "When this team gets themselves going and gets some confidence they really do some nice things."
Lehner made 29 saves for the Sabres (14-29-10), who have lost four straight games, all at home.
Corey Perry gave the Ducks a 3-2 lead at 11:30 of the third period. He was given credit for his 10th goal of the season after Sabres forward Ryan O'Reilly inadvertently shot the puck off Lehner's stick and into the net.
"It's a stupid play by me," O'Reilly said. "I've got to make it go right to the corner. I saw a lot of guys on that side of the ice. I was trying to go behind the net and take it out the other side and [it's] just stupid play. I've got to be more aware. It's frustrating."
O'Reilly made up for his mistake when he scored his 15th goal with 15 seconds remaining in the third to tie it 3-3.
"It's a difficult place to be and I've been there before," Buffalo coach Phil Housley said. "You try to battle back mentally. It was a credit to him, it was a credit to our team that we applied some pressure … and tied it up."
Jack Eichel's first goal in five games gave the Sabres a 2-1 lead with 2:42 remaining in the second period. Kyle Okposo passed to Sam Reinhart, who made a touch pass to Eichel, who scored his 21st goal.