Chad Kilger, Mats Sundin and John Pohl also scored, and Bryan McCabe added three assists for the Maple Leafs. Toronto had dropped five of seven.
Sami Kapanen and Simon Gagne scored for the Flyers, who lost their fourth straight and fifth in six games.
Andrew Raycroft, making his 23rd consecutive start in goal for Toronto, stopped 22 shots for his 28th win. The Maple Leafs have won five in a row against the Flyers and seven of their last eight meetings.
Raycroft kept the Flyers at bay with several brilliant stops, including a glove save on Jeff Carter late in the first period and stick saves on close shots by Alexei Zhitnik and Gagne in the second. Raycroft also stopped Kapanen on a breakaway midway through the third.
Steen put the Maple Leafs ahead with a one-timer from the left circle at 11:16 of the first period. It was his 12th goal of the season and first in eight games since scoring the game-winner at St. Louis on Feb. 6.
O'Neill made it 2-0 with his 20th goal at 12:57 of the second period when he poked in a rebound of Steen's wrist shot.
Kilger increased Toronto's lead when he stuffed the puck under the right pad of Philadelphia goalie Michael Leighton with 2:00 left in the period.
Philadelphia responded 46 seconds later when Kapanen scored unassisted on a slap shot from the left circle.
Sundin put in a rebound of his own shot for his team-leading 26th goal at 8:41 of the third period.
Pohl and Gagne traded goals in the final 1:10. It was Gagne's team-leading 34th.
Leighton made 25 saves.
Notes: Toronto D Pavel Kubina was scratched after breaking his finger against the New York Islanders last Thursday. ... The Flyers are 1-4-1 since trading captain Peter Forsberg on Feb. 15. ... Toronto D Tomas Kaberle had his team-leading 39th assist on Kilger's goal.