John Klingberg stole the puck from Matias Maccelli in the offensive zone and found Zegras in the slot for a wrist shot for his 18th goal of the season.
Max Jones also scored, and John Gibson made 32 saves. The Ducks (16-29-5) have won four of their last five games.
Nick Ritchie scored and Connor Ingram made 43 saves for the Coyotes (16-28-6). They are tied with the Ducks for the second-worst record in the Western Conference.
It was the last game before the All-Star Game break for both teams, who are firmly in contention to win the NHL draft lottery and select Connor Bedard with the first overall pick in June.
Jones tied the score 1-1 for the Ducks with 7:28 left in the second period. He scored his fourth goal on a wrist shot from the right circle, set up by assists from the defensive pair of Klingberg and Urho Vaakanainen.
The Coyotes had the only goal in the first period. Christian Fischer found Ritchie in the slot to shoot into an open net with 3:39 remaining, good for Ritchie’s ninth goal of the season.
It was the third point in the last two games for Ritchie, who was drafted in the first round by the Ducks in 2014. He had two assists in a win over St. Louis on Thursday.
Bad blood
Zegras received a 10-minute misconduct for cross-checking Barrett Hayton during a power play. Zegras also said something during the ensuing scrum that made defenseman Troy Stecher irate.
Zegras has not been happy with the Coyotes since Ducks forward Troy Terry sustained facial injuries in a fight with then-Arizona center Jay Beagle in April after coming to Zegras’ defense.
Worth noting
Fischer got his 50th career assist in 368 games. … Ducks defenseman Kevin Shattenkirk missed his second straight game because of a lower-body injury.
Up next
Coyotes: Host Minnesota on Monday, Feb. 6.
Ducks: At Dallas on Monday, Feb. 6.