"Larkin's game has improved tremendously," Red Wings coach Jeff Blashill said. "He's a 200-foot player now and he's really made a concerted effort to work on his give-and-go game. When you do that, you will get assists."
Johnson tied the game 1-1 at 19:44, scoring his first goal of the season with a slap shot through traffic.
"Erik was great," Yakupov said. "He plays 30 minutes every night and he makes plays for us."
The Red Wings killed three second-period power plays, including 48 seconds of 5-on-3, and Howard made four tough saves in a 53-second stretch late in the period.
Moments later, Athanasiou split the Avalanche defense, deked Bernier and slipped the puck in to give Detroit a 2-1 lead at 19:03.
Kronwall made it 3-1 with a power-play goal at 11:07 of the third, stepping in from the blue line to beat a screened Bernier with a slap shot.
Detroit, though, couldn't hold the lead against a team playing the second of back-to-back games.
"We have to be able to close these games out," Abdelkader said. "We have to be able to play faster than a team on a back-to-back."
Yakupov scored on Colorado's sixth power play to make it 3-2 at 13:45.
"We knew we could get one if we stuck with our structure," he said. "We just kept trying to create chances, and I got a lucky bounce. All I had to do was shoot it."