The Angels had lost four straight before getting an outstanding effort from Richards (4-5), who made his sixth start since a return to the rotation from the bullpen. He allowed four hits and struck out four in 7 1/3 innings.
Chris Nelson hit a two-run homer in the second, one of just four hits managed by the Angels.
Felix Hernandez (12-7) suffered his second straight loss despite limiting the Angels to three hits and a walk over six innings. He struck out 10.
Seattle had won three out of four.
Dane De La Rosa relieved Richards with one out and nobody on in the eighth and retired the only two men he faced. Ernesto Frieri gave up a two-out single in the ninth before recording his 27th save.