David Backes also scored and Jaroslav Halak stopped 26 shots to help St. Louis win for the fifth time in 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 2 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 last 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 at 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 last 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 had 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.
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," said Colorado coach Joe Sacco. "There was a lot of intensity. For the most part, we played hard."
Colorado forward 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."
Material from wire services and team media was used in this report