It looked like the skidding Caps would be going down to their ninth consecutive loss early on, when they spotted the Senators a 2-0 lead on goals by Ryan Shannon and Chris Kelley.
But Washington roared back in the middle frame, notching three goals in less than 6 minutes. Perreault got his first goal 34 seconds into the period and Eric Fehr made it 2-2 only 46 seconds later.
Perreault got the go-ahead score at 6:55, firing a rebound of a Fehr shot into an open net on a power play.
Michal Neuvirth stopped 24-of-26 shots as the Caps won for the first time since Dec. 1.
Brian Elliott made 31 saves for Ottawa's setback.
McPhee, Cokas 'working on their marriage' after affair
Astronomers offer more expansive view of universe