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.