Every player in Detroit's starting lineup delivered at least one hit, and the team totaled 21. Cabrera had four and drove in six runs in a game for the fifth time in his career. He last accomplished the feat on Sept. 18, 2012, against Oakland.
Harrell lasted just 4 1/3 innings while allowing 10 hits, which tied a career high, equaling the 10 he allowed on May 30, 2012, at Colorado. He gave up eight earned runs, walked four and struck out three. It was his shortest stint since going 4 1/3 innings on April 7 against Oakland.
"I'm really not all that mad about it. I made some really good pitches," Harrell said. "In that first inning especially, you got weak contact out of Cabrera in a situation where you've got two on and nobody out, trying to get a ground-ball double play. [Austin] Jackson led off the game with a soft liner over short, and Torii Hunter rolls over on a good sinker down and in, again trying to get a double play.
"I made some good, quality pitches and they just made better hits. And then as the game wore on I made some good pitches, and then I made a mistake to Cabrera in and he does what he does."
Everything went right for Detroit in the first inning. Even Jhonny Peralta's broken-bat blooper dropped in short right field, scoring Victor Martinez to push the Tigers' lead to 4-0.
Harrell made it out of the first inning with a called third strike on Tigers catcher Alex Avila. But the damage was done, and neither Harrell nor the Astros recovered.
Cabrera drilled a two-run homer in the second inning, increasing the Tigers' lead to 6-0.
"It was just one of those days that even when you make a good pitch they still get a hit," Harrell said.
After a 1-2-3 third inning, Harrell dug himself into a hole in the fourth, walking Avila and Hunter and allowing a single to Omar Infante. He then just missed on a 3-2 pitch, walking Cabrera with the bases loaded to make it a 7-0 game.
"You don't like to see those games," said Tigers manager Jim Leyland. "I've been on both ends. They're not fun for either team. We got the luck of the draw. Unfortunately, they had a guy [Harrell] who's been pitching pretty good for them and didn't have it tonight."
Cabrera hit his second homer of the night in the sixth inning, blasting a 1-0 pitch from Astros reliever Jose Cisnero above the 362-foot sign in left-center.
Meanwhile, Tigers starter Matt Scherzer (4-0) faced the minimum through 5 2/3 innings. Astros center fielder Robbie Grossman opened the first inning with a single, extending his season-long hitting streak to six games, but was caught stealing, and Scherzer retired the next 16 batters he faced.
"He did a really good job," Astros second baseman Jose Altuve said of Scherzer's dominating performance. "He was throwing every pitch he wanted for a strike."
Matt Dominguez broke the streak with a sixth-inning single, and the Astros got on the board in the seventh inning when catcher Carlos Corporan hit his second homer of the season, a two-out solo blast to left field.
"I was looking for that pitch all night long," said Corporan, who knew it was gone from the moment it left his bat. "Oh yeah, no doubt about it. When you play on your home field you know how the ball travels."
Corporan made an exuberant trip around the bases.
"We're getting beat that bad, it felt good to do something good for the team. That's the way I am, I play with a lot of excitement."
Jason Castro added an RBI single in the ninth, but the game was out of reach.
"What you witnessed was why they were the American League champions last year," Astros manager Bo Porter said. "They rolled out their 'A' game and it was pretty impressive. The best thing about it is, this is baseball -- it only counted as one loss. This game is over and you come back and focus on tomorrow's game."