Kirk Maltby got the other goal, and Dominik Hasek made 11 saves for Detroit, which snapped its three-game losing streak.
Paul Stastny got the Avalanche's goal and Jose Theodore stopped 38 shots.
Datsyuk opened the scoring 9:44 into the second period with his 14th goal. He took Henrik Zetterberg's pass, from behind the net, as he cut across the slot. Datsyuk then waited until Theodore was out of position, and calmly put the puck into the net.
Holmstrom swatted a rebound into the net with 5:58 left for his 15th goal.
The play was reviewed to see if Holmstrom's stick was too high, but the goal stood.
Stastny got a power-play goal when he put in a rebound just 35 seconds later for his 14th of the season.
Maltby added his goal with 1:06 remaining.
Detroit defenceman Nicklas Lidstrom was hit behind his right ear by a shot from Colorado's Andrew Brunette 3:52 into the second period. Lidstrom went down and was tended to by Red Wings' trainer Piet Van Zant. But Lidstrom skated to the bench without assistance and didn't miss a shift.
Neither team could manage a shot until more than seven minutes had been played. Avalanche defenceman Ken Klee finally got a soft wrist shot through from the blue line on Hasek at 7:25.
Notes: Colorado D Patrice Brisebois, who has been out since late December, will undergo season-ending surgery for a herniated disc. ... Detroit centres Robert Lang and Kris Draper returned after missing a game because of the flu. ... Theodore started for the first time since Dec. 27, when he allowed five goals in a loss to Dallas. ... Hasek turns 42 on Monday, and Red Wings' D Chris Chelios, the oldest player in the NHL, turned 45 on Thursday.