Richard had driven in just 10 runs in his five major league seasons before coming up with two key hits against the Mariners. He had produced only one hit in 25 at-bats this season prior to Friday.
Seattle took a 4-2 lead into the bottom of the fourth, but Everth Cabrera doubled home a run and a double by Richard brought home the tying and go-ahead scores.
The Padres eventually tallied five times in the fourth and Richard added an RBI single in the fifth.
Richard (5-7) went 6 2/3 innings to get the win. Three of the four runs he allowed were earned on six hits with six strikeouts.
San Diego ended a three-game skid and won for just the second time in seven games.
Kevin Millwood let the early lead get away and took the loss. Millwood (4-5) allowed five earned runs on eight hits in five innings.