Richards pushed Kimmo Timonen's pass from behind the goal past Martin Brodeur, and Flyers goalie Michael Leighton made that stand up. James van Riemsdyk and Jeff Carter also scored to help the Flyers rally from a 2-0 deficit and snap a two-game losing streak.
Zach Parise and Anssi Salmela scored for the Devils, who have lost 10 of 14.
Salmela left the ice on a stretcher after scoring when he took a hard shoulder to the face from Carter. There was no immediate word on his condition.
Moments after his short-handed goal, a wrister past Leighton's glove side that gave New Jersey a 2-0 lead, Salmela was struck by Carter as he skated by. Salmela tumbled to the ice and remained face down for several minutes, until the Devils medical staff wheeled him off.
The 25-year-old Salmela arrived in last week's trade with Atlanta that brought Ilya Kovalchuk to New Jersey, and was playing in his second game with his new team. The goal was his first with the Devils and second this season. Kovalchuk has two assists but remains without a goal with New Jersey.
With the Devils ahead 2-0, Brodeur allowed goals to van Riemsdyk and Carter 1:12 apart late in the second period. Van Riemsdyk scored at 18:24 when he split two defenders and wristed a shot past Brodeur's glove side from just above the faceoff circle. Carter followed by taking Scott Hartnell's cross-ice pass and slammed a one-timer past a tumbling Brodeur.
Parise scored New Jersey's first goal when his attempt to center the puck from just below the faceoff circle glanced off Chris Pronger's skate and past Leighton. It came during a power play seven minutes into the game.
SHARKS 3, MAPLE LEAFS 2
In Toronto, Ryane Clowe scored with less than seven minutes left in the third period, leading San Jose over Toronto.
Dan Boyle and Joe Pavelski also had goals for the Sharks, who sent Jean-Sebastien Giguere to his first loss since being acquired from Anaheim on Jan. 31. Giguere had posted shutouts in his first two games with San Jose.
Tyler Bozak and Phil Kessel scored for the Maple Leafs, who nearly tied it with a flourish in the final minute of regulation.
Evgeni Nabokov made 32 saves for San Jose.