Felix Hernandez has never thrown a no-hitter. (Associated Press)

Mariners right-hander Felix Hernandez has thrown a perfect game against the Tampa Bay Rays, as Seattle beat Tampa Bay 1-0.

Hernandez struck out 12, including Sean Rodriguez to end the game. King Felix struck out five of the final six batters he faced to finish off the third perfect game of 2012 -- and second one at Safeco Field. There have now been a total of 23 perfect games in baseball history, 21 in the modern era. The Rays have been on the wrong side of three perfect games in the last four years -- Mark Buehrle and Dallas Braden threw perfect games against the Rays in 2010.

"When [Philip Humber] threw a perfect game here, I said 'I gotta throw one, I have to,'" Hernandez said after the game. "I've been working so hard to throw one and I did it for you guys."

In the ninth, he struck out pinch-hitter Desmond Jennings to start the inning. Jeff Keppinger pinch-hit for Elliot Johnson and grounded out to set up Rodriguez's at-bat.

"You just can't hit [Hernandez's curveball], no human can, maybe [Barry] Bonds," catcher John Jaso said.

Before the perfect game on Wednesday, Hernandez had 21 career complete games, seven shutouts, four two-hitters and one one-hitter in his career.

Rays manager Joe Maddon was ejected with two outs in the seventh after arguing a strike one call against Tampa Bay's Matt Joyce with two outs in the seventh. Joyce grounded out to first after working the count full.

Rays' starter Jeremy Hellickson allowed just five hits in seven innings.

For more baseball news, rumors and analysis, follow @EyeOnBaseball on Twitter, subscribe to the RSS feed and "like" us on Facebook.