Eduardo Rodriguez (1-2) pitched 6 2/3 scoreless innings, allowing five hits and walking four as the Tigers won for just the second time in 11 games.
''I haven't had a happy drive home in a long time,'' Tigers manager A.J. Hinch said.
The Orioles left the bases loaded in each of the last three innings and went 1 for 12 with runners in scoring position.
''They've got some good arms in the bullpen and we were just never able to get that big hit,'' Orioles manager Brandon Hyde said. ''We gave ourselves plenty of chances. We just needed one or two timely hits.''
Cabrera gave the Tigers a 1-0 lead with an RBI double in the third. It was his 602nd career double, moving him ahead of Barry Bonds for sole possession of 17th place in major league history and drawing a standing ovation from the Comerica Park crowd.
His 504th career homer in the sixth inning made it 2-0. The homer moved him into a tie with Eddie Murray for 27th on the career list and gave him 1,123 extra-base hits, breaking a tie with Manny Ramirez for 17th place.
''I keep meaning to give Miggy a day off, but he's just such a huge presence in our lineup,'' Hinch said. ''I was thinking about Sunday, but after he swings the bat like this, I might have to rethink that.''
Two batters later, Jonathan Schoop singled and scored on Willi Castro's double before Spencer Torkelson made it 4-0 with an RBI single.
''I wanted to get deep into the game, because we had to use the bullpen a lot yesterday, and things were going smoothly until that sixth inning,'' Orioles starter Jordan Lyles said. ''I felt good to get a couple more innings, but I started falling behind guys and they made me pay for it.''
Lyles (2-3) took the loss, giving up four runs on six hits and three walks in 5 2/3 innings.
''I think he might have gotten a little fatigued there in the sixth,'' Hyde said. ''He kept us in the game, though.''
Baltimore had runners at second and third with one out in the first, but Anthony Santander popped out and Tyler Nevin grounded back to the mound.
Rodriguez left after walking Robinson Chirinos and Chris Ownings with two outs in the seventh. Andrew Chafin allowed an infield single to Cedric Mullins, loading the bases, but struck out Jorge Mateo.
Trey Mancini and Santander homered on Jacob Barnes' first two pitches of the eighth, making it 4-2. Nevin walked, bringing Alex Lange out of the bullpen.
An error by third baseman Jeimer Candelario extended the inning, and Ownings walked to load the bases with two outs. Mullins, though, popped out to keep the Tigers ahead.
Tigers closer Gregory Soto hit Mateo and Mancini to start the ninth. After Santander struck out, Nevin walked to load the bases. Will Vest replaced Soto and struck out pinch-hitter Ramon Urias and Rylan Bannon for his first career save.
''All I was thinking about was throwing strikes,'' he said. ''It was good to get ahead, and even if we had to scratch and claw at the end, we got the win.''
Vest, who started his career as a Rule 5 pick last season with the Seattle Mariners, had never pitched in the ninth inning of a game that was closer than four runs.
''We're just trying to get to 27 outs there,'' Hinch said. ''Gregory was struggling with the strike zone, and while I didn't love putting Will in a situation he's never been in, he did a great job.''
Orioles: Baltimore put INF Ryan Mountcastle (left wrist forearm strain) on the 10-day injured list.
Tigers RHP Casey Mize (elbow) made a rehab start for Triple-A Toledo on Thursday, allowing four runs and three hits while retiring only two batters. ... INF Victor Reyes (quad) went 2 for 3 with a walk for the Mud Hens and is 5 for 9 with a homer, three walks and four runs in three games.
Orioles RHP Denyi Reyes made his major league debut in the seventh inning, and was involved in an unusual play. With two outs, Javy Baez hit a long fly ball down the left-field line that plate umpire Quinn Wolcott called a home run. Baez, believing the ball to be foul, didn't run until asking Wolcott what to do.
After a conference, the umpires changed the call to a foul ball and a replay review quickly confirmed the decision. Reyes struck out Baez on the next pitch and finished with two perfect innings.
''We had a bullpen game yesterday, so we were a little shorthanded out there,'' Hyde said. ''It was huge to have Reyes come in and give us those two innings in his debut when we really needed them.''
The teams play the second of a three-game series Saturday with Baltimore's Bruce Zimmermann (2-1, 2.67) facing Michael Pineda (1-3, 3.43).
More AP MLB: https://apnews.com/hub/MLB and https://twitter.com/AP-Sports
Copyright 2023 STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.