The Red Wings ended a two-game skid after giving up a tying goal to Alex Ovechkin with only seven seconds left in the third period.
Twelve players missed their penalty shot before Eaves got the best of Michal Neuvirth. Jimmy Howard then stopped Jay Beagle to secure the win.
Gustav Nyquist gave Detroit a 3-2 lead midway through the third period before Ovechkin delivered his league-leading 40th goal of the season.
Howard made 26 saves in regulation and overtime before producing seven more in the shootout. Neuvirth gave up three goals on 45 shots.