Greinke gave up one hit and struck out five. He left after issuing his lone walk to Casper Wells leading off the fourth.
Alex Liddi hit a go-ahead single for the Mariners in a five-run ninth. Michael Saunders added a two-run double off Mark Rogers.
Seattle starter Hector Noesi went three innings, allowing one run and three hits.
Mariners catcher Jesus Montero, who entered the game hitting .389, struck out in all three at-bats.