ST. LOUIS -- Kevin Shattenkirk took advantage of a chance to show off against his former team.
David Backes also scored and Jaroslav Halak stopped 26 shots to help St. Louis win for the fifth time in the past seven games. The Blues also snapped a seven-game losing streak to the Avalanche, beating Colorado for the first time since April 12, 2009.
"I wanted to get out there and prove that I found my niche here," said Shattenkirk, who has two goals and 14 assists with the Blues. "It has been a blast."
Kevin Porter scored his career-best 14th goal of the season for the Avalanche, who have lost six of seven and 16 of their past 19.
Shattenkirk converted on a 5-on-3 power play at 4:07 of the second period to give the Blues the lead for good 2-1. It was his ninth goal of the season overall.
McDonald, who assisted on the first two goals, added an empty-netter with 40 seconds to go.
St. Louis coach Davis Payne said Shattenkirk has been a welcome addition to the back line.
"He's got a lot of confidence with the puck," Payne said. "He has the ability to take that extra step, to create that extra lane. With a guy like that, he's always got his head up shooting."
Shattenkirk helped get the Blues off to a 1-0 lead by setting up the first goal late in the opening period. His shot from the blue line deflected off the stick of Backes, who was camped in front of the net. Shattenkirk said he threw the puck on the net hoping Backes could make contact. Backes has a team-high 30 goals and four in his past six games.
"I've been pretty good at finding him, and he's been pretty good at finding the back of the net," Shattenkirk said.
Colorado tied the game less than two minutes later on Porter's tally.
But Halak rallied to stop the final 16 shots after the goal. He made three key saves in the final two minutes.
The victory helped the Blues break a painful losing streak against Colorado, which outscored St. Louis 35-17 during the seven-game run.
"This team, the last couple of years, has had our number," said McDonald, who recorded his fifth three-point game of the season. "We talked about it before the game. We realized that we needed a better effort."
Colorado goalie Peter Budaj made 26 saves while losing for the first time in six starts against the Blues.
St. Louis picked up four fighting majors to push its league-leading total to 78. The physical game featured 132 penalty minutes, eight fighting majors, five 10-minute misconducts and two game misconducts.
"It was a spirited game for two teams that aren't going to the playoffs," Colorado coach Joe Sacco said. "There was a lot of intensity. For the most part, we played hard."
Colorado winger Milan Hejduk was held without a point and remains tied with Peter Forsberg for fourth on the franchise's all-time scoring list with 755 points. He had a late scoring chance in the third period.
"We gave everything we had," Hejduk said. "We created some chances, but nothing went in."
Nine Avalanche players missed the game due to injuries, bringing the season total of man-games lost to a team-record 442. ... McClement played in his 257th consecutive game. ... Avalanche RW Brandon Yip played in his 100th career game Tuesday. ... The Blues have sold out all 40 home games this season. ... Johnson had four shots in 28:06 against his former team. "He was trying to be a difference-maker out there," Sacco said. "His play really jumped out at me."