BOSTON -- Playing through illness and a hard hit, Matt Calvert scored the late goal the Columbus Blue Jackets needed.
Then he scored another to lock up the win.
Calvert's two third-period goals gave the Blue Jackets a 3-1 victory against the Boston Bruins at TD Garden on Saturday.
It ended Columbus' four-game losing streak and Boston's five-game winning streak.
"I thought the hit [Matt] took in the second period (from Carl Soderberg) was a shot right to his head," Columbus coach Todd Richards said. "So he recovered from that, the illness too. But again, he's skating. Skating, getting up and down the ice, rewarded at the end with two goals. That's what you want to see from the guys that are working."
Calvert's goal came after Blue Jackets forward Cam Atkinson shot from the slot. As the puck trickled behind Bruins goalie Tuukka Rask toward the net, Calvert got his stick on it for a 2-1 lead with 3:03 remaining.
He scored his second goal into an empty net with 38 seconds left. Calvert wasn't available to the media afterward.
The Bruins were without leading goal-scorer Brad Marchand, who served the first of his two-game suspension for slew-footing Derick Brassard of the New York Rangers on Thursday.
Bruins coach Claude Julien tried Daniel Paille and then Gregory Campbell in Marchand's slot, but couldn't get the line to produce. Boston's defense struggled more than it had over the past few games, and Rask dealt with multiple scrums.
"It was a night and day from the past whatever games we played well," said Rask, who made 28 saves. "We started a little slow and then we gained our game in the first period. Then the second and third we were just back to the old habits."
The Blue Jackets took a 1-0 lead on a power-play goal 7:57 into the first period. Ryan Johansen collected a pass from Jack Johnson just beyond the right faceoff circle, burst forward and zipped a wrist shot past Rask. Johansen's 17th goal of the season extended his point streak to 13 games.
"We made a good play off the draw and had some good possession and movement," Johansen said. "I just took it down the half-wall and kind of used their guys to screen and picked far side and it happened to go in."
The Bruins tied it 1-1 at 11:34 when Chris Kelly scraped his way off the boards and whipped a hard pass directly in front of Curtis McElhinney's crease. Stretching out, Loui Eriksson got enough of the puck to wrong foot the Blue Jackets and set up Soderberg for a wide-open back-post shot.
"I didn't mind the first period," Julien said. "I know they got the power-play goal, but then we came in there, had some chances. I didn't like our second, obviously our third. It was one of those nights."
McElhinney started in place of Sergei Bobrovsky and made 34 saves.
"McElhinney made some great saves for us tonight, some big saves, some timely saves," Richards said. "Because in the third period you could see they made a push. … A couple of pucks were turned over. But he responded; he made some huge saves for us and then we stuck with it, the forecheck, and eventually found a way to get one by [Rask]."
The Blue Jackets (19-21-3) play at the Minnesota Wild on Monday. The Bruins (24-16-6) visit the Dallas Stars on Tuesday.
"We're a north-south type of team, we backcheck hard, we forecheck hard, and we make things happen by taking pucks to the net," Julien said. "Tonight we weren't willing to do that. When we got into the battle you could tell they wanted it more than us. We've got to accept the blame and the responsibility. We weren't good enough tonight and we shouldn't accept that."