Bieber (4-3) had fanned at least eight in 20 straight games, but the reigning AL Cy Young Award winner fell short with seven. He was pulled after issuing his fourth walk and finished his shortest outing of the season at 4⅔ innings, trailing 3-0.
"You have to ride the highs with the lows. And today, I'm frustrated that I wasn't able to go out there and do what I know I'm capable of doing," Bieber said. "Objectively, the bullpen did a phenomenal job saving me there, and we almost scratched one out."
The victory was Seattle's third straight following a season-high five-game losing streak. Cleveland has lost three in a row, and this last one was quite pleasing to the home manager.
"We certainly respect their starter and what he's done," Seattle's Scott Servais said. "But we were ready."
Seven Mariners pitchers combined for 13 strikeouts. Opener Robert Dugger went three innings and Paul Sewald (1-0) pitched the next two to pick up his first win since 2019. Kendall Gravemen worked the ninth for his fifth save.
Haniger, tied for the major league lead with 12 home runs, doubled and scored on Kyle Lewis' single in the first.
"Physically, I feel good. I was ready throw more, but I wasn't throwing well enough to throw more. I have to shift my focus to redeveloping consistency with my delivery. I felt like I was able to compete today, but not with very good stuff at all," Bieber said. "I think I just have to keep things in perspective, and be better for it."
Bieber walked Lewis and Crawford to load the bases with two outs in the fifth, ending his appearance. Reliever Phil Maton got out of the jam with a strikeout.
"He worked behind in the count a lot. Seemed like he had a lot of 2-0 counts. And two of his walks today scored," Cleveland manager Terry Francona said. "We're going through a bit of a period right now. But even on a tough day for Biebs, he'll compete and he'll hang around."
Bieber leads the majors with 92 strikeouts after starting the season with 10 or more in his first four outings, another major league record.
Cleveland scored twice in the sixth with help from third baseman Donovan Walton's error that allowed Jose Ramirez to reach base. The Mariners turned a double play to get out of a bases-loaded jam in the seventh.
Bieber allowed a run in the first inning Sunday. In 2020, he allowed only one total run in all of his first innings.
But while Bieber's string of games with eight-plus strikeouts came to an end, another continues. The pitcher moved into a tie for second with former Mariners pitcher Randy Johnson for the most consecutive games with at least seven strikeouts at 22. Johnson also has the franchise's ultimate streak in this category, with 34 straight games of seven or more.
The last time Bieber didn't strike out at least eight in a regular-season game was his final start of the 2019 season. He also struck out seven last year in a playoff start against the Yankees.
"That one is on me," he said of Sunday's loss, "and not doing what I can do and what I set out to do. But it is what it is and I've got to focus on the next one."
The Associated Press contributed to this report.