Andrew Cogliano had a goal and an assist, and Adam Henrique and Ryan Kesler also scored for the Ducks, who moved into third place in the Pacific Division.
Ryan Miller made 19 saves after replacing John Gibson at the start of the second period, helping the Ducks to their fifth straight home win.
Gibson, who made 10 saves before departing, appeared to be shaken up late in the first when Gabriel Landeskog was cross-checked by Kesler into the goalie, who was being evaluated for an undisclosed injury.
Tyson Jost scored twice and Alexander Kerfoot had a goal and an assist for Colorado, which passed St.