Benoit Pouliot, Chris Kreider, Brad Richards and Brian Boyle also scored for New York, and Cam Talbot stopped 25 shots.
Joffrey Lupul scored for Toronto, which snapped a three-game winning streak. Jonathan Bernier gave up five goals on 32 shots before getting the hook in favor of James Reimer, who hadn't played since being yanked Dec. 21. Reimer didn't fare much better, giving up two goals on 18 shots.
Hagelin's deflection goal put the Rangers up at 6:57 of the first, and Moore made it 2-0 exactly 9 minutes later.
Toronto also lost defenseman Carl Gunnarsson and winger David Clarkson to injuries. Gunnarsson suffered an upper-body injury on a hit from Hagelin only minutes after Clarkson blocked a shot with his left foot and hobbled to the bench.
The Rangers outshot the Leafs 50-26, and Toronto couldn't take advantage of the handful of quality scoring chances it got.
James van Riemsdyk got it started with a rush down the left wing and shot on Talbot 19 seconds in, and Phil Kessel missed the net on a rapid-fire rebound. Roughly 20 seconds later, Kreider hit the post behind Bernier and the puck slid across the goal line to Rick Nash, who fumbled it and couldn't put it in the empty net.
Still, it didn't take long for the Rangers to get on the board, as Hagelin deflected Dan Girardi's shot from the point past Bernier.
Moore's first goal came from a bad angle as the puck went between Bernier's legs to double New York's lead.
The Rangers' third goal, at 10:39 of the second, was more a result of perfect, tic-tac-toe passing than a breakdown by the Leafs. Derick Brassard found an open Marc Staal, who got Bernier to commit just enough to give Pouliot a wide-open net to hit.
Exactly four minutes later Kreider blew past Cody Franson to make it 4-0, but Leafs coach Randy Carlyle stuck with Bernier—who had stopped 181 of 190 shots in his previous five appearances.
Once Moore made it 5-0 at 16:35 of the second, Carlyle pulled the plug on Bernier's night as boos rained down from the crowd. Reimer, pulled from four of his 18 starts this season, got a hearty round of applause as he skated to the net.
The switch looked like it provided the Leafs with at least a little bit of a jump-start. Just 67 seconds after Reimer entered the game, Lupul roofed a shot past Talbot to make it 5-1.
Carlyle juggled his lines in the third period, and the Leafs showed flashes of promise but couldn't cash in.
Richards restored New York's five goal lead 9:03 into the third, skating down the right wing and beating Reimer.
With Franson in the penalty box, Boyle added the seventh goal by taking a pass from Michael Del Zotto and tapping it in with 3:56 left.
It looked like New York would have an eighth, but it was disallowed because Boyle interfered with Reimer.
This was the first time this season the Rangers scored more than five goals and the first time the Leafs allowed seven.
NOTES: Newly acquired D Tim Gleason was a healthy scratch as Carlyle stuck with the same lineup from the Wednesday's Winter Classic. Gleason took part in warm-ups, but Carlyle announced Saturday morning that the former Carolina Hurricanes blue-liner would not play unless there was a late injury or illness. ... Talbot got the start after Henrik Lundqvist played Friday night in Pittsburgh and allowed five goals in a loss to the Penguins.