Updated

Penguins star Sidney Crosby scored with 3:22 remaining to extend his points streak to 24 games, but Erik Karlsson had two goals and an assist to lead the Ottawa Senators to a 3-1 win over Pittsburgh on Sunday night.

Jason Spezza also had three points for Ottawa, but left in the second with an upper-body injury.

Crosby's 30th goal spoiled Brian Elliott's shutout bid. But Crosby, the NHL's leading scorer with 61 points, also had a couple of costly penalties.

Mike Fisher scored the first of Ottawa's two power-play goals midway through the first after Crosby was sent off for hooking. Karlsson made it 2-0 at 13:42 during a delayed slashing call against Crosby, who also hooked Chris Phillips late in the second to negate a Penguins power play.

Jason Spezza got his third assist on Karlsson's second goal of the game, another power-play effort 20 seconds into the middle period. Spezza left moments later after he was checked into the boards from behind by Kris Letang.

Elliott turned aside 44 shots, including 22 in the second period, as Ottawa won consecutive games for the first time since a season-high four-game winning streak in early November.

Marc-Andre Fleury made 21 saves for Pittsburgh, which had won 16 of 18, including three in a row.

Karlsson got the first of his three points 9:14 in when his shot deflected off Pittsburgh defenseman Paul Martin's stick and struck Fisher on its way past Fleury.

With a delayed penalty called signaled against Crosby, Spezza had time to come off the bench to replace Jarkko Ruutu and get the second of his three assists when Karlsson scored on a shot from the point.

The Swedish defenseman made it a three-goal lead with his eighth of the season early in the second.

Fleury made a spectacular glove save on Nick Foligno's penalty shot 10:30 into the third. Foligno was hooked on a breakaway before he put a backhand through Fleury but Pittsburgh's Chris Kunitz scooped the puck away barely before it would have entirely crossed the goal line.

NOTES: There was a sold-out crowd of 20,146. ... Phillips played his 900th regular-season game.