SEATTLE (AP) — John Means threw the major leagues’ third no-hitter this season and came within a wild pitch on a third strike of a perfect game, pitching the Baltimore Orioles over the Seattle Mariners 6-0 Wednesday.

Means (4-0) struck out 12 and walked none. Seattle’s Sam Haggerty raced to first after he struck out swinging on a curveball in the dirt on a 1-2 count with one outs in the third inning that bounced away from catcher Pedro Severino.

Haggerty wasn’t on base long, getting thrown out attempting to steal second.

Means, who started 19 games for the Norfolk Tides in 2018, threw 79 strikes among 113 pitches, including first-pitch strikes to 26 of 27 batters. When Seattle did make contact against the 28-year-old left-hander, it was weak and there were no threats to fall in for a hit.

“I cant put it into words right now. It’s unbelievable,” Means said after his first complete game in 44 career big league starts. “I felt OK all game. I didn’t really have the changeup till the end, but I’m glad I got it going.”

Means lowered his ERA to 1.37 and became the first individual Orioles pitcher to toss a no-hitter since Jim Palmer against Oakland on Aug,. 13, 1969. It was the 10th no-hitter in franchise history — six in Baltimore after four as the St. Louis Browns.

“It’s such a crazy feeling. It’s such a whirlwind of an experience. I don’t think I’ve been able to process it yet,” Means said. “But to be in the same breath as Palmer, I don’t think that it gets much better than that.”

In a season in which batters are on track to hit a record-low .232, Means joined a no-hit club that includes gems by San Diego right-hander Joe Musgrove at Texas on April 9 and by Chicago White Sox left-hander Carlos Rodón against Cleveland on April 14.

In addition, Arizona left-hander Madison Bumgarner pitched a seven-inning no-hitter against Atlanta on April 25, but that is not recognized as an official no-hitter by Major League Baseball because the game did not go at least nine innings, shortened under pandemic rules in effect for a second straight season.

The closest Seattle came to a hit through six innings was J.P. Crawford’s short fly ball in the sixth inning that center fielder Cedric Mullins made a sliding catch to grab. Kyle Lewis provided a threat with a drive to left field leading off the eighth that was caught on the warning track by Austin Hays.

Means got a popout from Dylan Moore, struck out Haggerty swinging and got a soft liner from Crawford to end it, setting off a wild celebration with his teammates on the mound and a standing ovation from the Seattle crowd.

“He was good. He was really good,” Seattle’s Kyle Seager said. “He was in control. I don’t think we had hardly any balls that were close to being hits.”

Baltimore’s previous no-hitter came on July 13, 1991, when Bob Milacki, Mike Flanagan, Mark Williamson and Gregg Olson combined for a 2-0 victory at Oakland,

Means had never pitched beyond seven innings in a big league start.

“When I started the (ninth) I got a little bit of the Jell-O legs, just a little bit, started to kind of feel a little wobbly,” Means said. “But once I did get that first pitch I was able to lock in again.”

Means had plenty of offensive support. D.J. Stewart and Ramón Urias both had RBI singles against Yusei Kikuchi in the third inning. Pat Valaika hit a solo home run off Kikuchi (1-2) in the sixth and Trey Mancini provided a three-run shot off reliever Aaron Fletcher in the eighth inning, Mancini’s sixth home run in a season that marked his return from colon cancer surgery.

TRAINER’S ROOM

Mariners: RHP Keynan Middleton was placed on the 10-day injured list due to a biceps strain but the initial belief is it will be a short stint on the IL. Middleton left his relief appearance in the ninth inning on Tuesday night after just four pitches. Manager Scott Servais said it appears not to be a significant injury and Middleton should be back after the 10 days.

UP NEXT

Orioles: Following an off-day, Baltimore opens a four-game series at home against Boston on Friday. RHP Matt Harvey (3-1, 4.06) will start the opener.

Mariners: After an off-day, Seattle opens a five-game road trip on Friday at Texas. Due to injuries with the rotation, Seattle has not announced a starter.