Alex Ovechkin scored two goals - including an empty-netter in the final minute - and Nicklas Backstrom had four points for the Capitals.
The Southeast Division leaders rallied from a 2-0 deficit to stretch their winning streak to five games.
After a scoreless opening period, Scott Hartnell and Braydon Coburn put in power-play goals in the second to put the Flyers ahead.
But, with Theodore en route to 41 saves, the game was tied heading into the third.
About 5½ minutes into the final period, Semin put the hosts ahead to stay with his seventh goal of the season. His wrist shot appeared to deflect off defenseman Kimmo Timonen on its way past goalie Ray Emery.
Semin sat out Washington's previous two games because he was, as coach Bruce Boudreau put it, sick and sore. But Semin looked just fine from the outset against Philadelphia, challenging Emery with a strong shot on his first shift.
The forward would have to wait to score, though, eventually doing so off assists from Backstrom and defenseman Mike Green.
Less than 1½ minutes later, Powe got his chance to tie things up again, but Theodore kicked away the penalty shot.
After Hartnell's goal 3:06 into the first period made it 1-0, the Flyers killed off a 5-on-3 chance for the Capitals that lasted more than 1½ minutes.
Shortly thereafter, Washington's Tyler Sloan went into the penalty box, and only 9 seconds in, it was 2-0, thanks to Coburn's goal on a slap shot past a screened Theodore.
Ovechkin pulled Washington within a goal at 16:08 of the second, putting a shot over Emery's shoulder, and Backstrom tied it with less than 2 minutes left in the period on a power play.