Wieters, who turned 30 Saturday, hit a three-run homer with two outs in the top of the ninth inning to give the Baltimore Orioles a 3-1 win over the Los Angeles Angels.

Wieters lifted a 1-0 sinker from Joe Smith (1-3) over the wall in left-center to put the Orioles ahead after they were down to their final out.

''I think I'll remember this birthday,'' Wieters said. ''It's good to get a win. It was a tough win, but a good win.''

Brad Brach (4-0) pitched 1 1/3 innings of scoreless relief for the win, and Zach Britton worked the ninth for his 12th save.

Matt Shoemaker struck out a career-high 12 over 7 1/3 shutout innings but got a no-decision for the Angels. He retired the first 14 batters of the game before Wieters ended his perfect game bid with a two-out double in the fifth.

Shoemaker recovered from the setback to carry a shutout into the eighth inning. He allowed only three hits, walked none and threw 71 of 95 pitches for strikes, but got stuck with a no-decision after Smith blew his second save in seven chances this season.

''When you get a starter (to) have an outing like that, you expect to win the game,'' Angels manager Mike Scioscia said. ''It's tough.''

Shoemaker recorded a strikeout in every inning, including six in his streak of 14 straight batters retired to open the game. Wieters hit a' sinking liner in the fifth that fell just under the glove of diving left fielder Rafael Ortega and bounced behind him for the double to snap the streak, but it was the only runner Shoemaker allowed past first base all night.

The Orioles pounced on Smith in the ninth to spoil Shoemaker's effort. Chris Davis hit a two-out single up the middle, Mark Trumbo walked, and Wieters completed the rally with his fourth home run of the season.

''Sidearm guys you're trying to hit the ball the other way and get a ball up,'' Wieters said. ''I think he was probably trying to come in a little bit and he left it over the middle and I was able to get the barrel on it.''

The Angels had the tying run at the plate with no outs in the ninth after Gregorio Petit walked to lead off the inning, but Britton struck out Yunel Escobar - who was ejected for arguing the called third strike - and induced groundouts from Kole Calhoun and Mike Trout to end it.

''Our pitching did real well and gave us a shot at the end,'' Orioles manager Buck Showalter said. ''That's a good lineup, and to hold them to one run gave us a chance.''

Petit doubled with two outs in the seventh off Kevin Gausman and Escobar followed with an RBI single for the Angels' run.

Gausman went 6 2/3 innings, gave up eight hits and struck out six.

TRAINER'S ROOM

Orioles: LHP T.J. McFarland (left knee) will have an MRI in Baltimore on Sunday. He suffered an unspecified injury to the knee while covering the plate during a game for Triple-A Norfolk on Friday.

Angels: LHP C.J. Wilson (shoulder inflammation) will make his first rehab start next Wednesday, likely with Class A Inland Empire, according to Scioscia. ... RHP Huston Street (oblique strain) will pitch a simulated game on Monday. ... LF Craig Gentry (back strain) played in his second game of a rehab stint with Inland Empire and may rejoin the Angels as soon as next week.

GAUSMAN WAITING

Gausman remains 0-1 on the season despite four quality starts in six outings. Saturday marked his fifth straight no-decision.

''I'll get at least one win this year, I'll guarantee you that,'' Gausman said. ''With this lineup, you just try to keep the game as close as you can. It's all about the team win, and these guys came up big when they needed to. They like to make it dramatic.''

NEW ARM

The Angels selected the contract of RHP Deolis Guerra from Triple-A Salt Lake and designated RHP Al Albuquerque for assignment.

Guerra, 27, pitched five scoreless innings of relief for Salt Lake. He last appeared in the majors in 2015 with Pittsburgh.

Albuquerque, 30, had 2.40 ERA in Salt Lake and did not appear for the Angels this season.