DETROIT -- Jake Westbrook took advantage of some extra rest and pitched a little longer -- all the way until the end for his first complete game in more than two years.
Westbrook gave up only an unearned run in the St. Louis Cardinals' 3-1 victory over the Detroit Tigers on Wednesday night. The right-hander's last two starts have been on five days' rest, and he's won them both.
"I guess the older I get, the better it is to get a little more rest," the 34-year-old Westbrook said.
Westbrook (6-6) allowed five hits, struck out five and walked one. It was his 14th career complete game, but his first since May 16, 2010, when he was pitching for Cleveland at Baltimore.
"It's a great feeling," he said. "Every time you go out there, you want to finish what you start."
The Cardinals took the lead in the sixth when Yadier Molina hit into a bases-loaded double play, breaking a 1-all tie. The Cardinals added an eighth-inning run on an error by Detroit shortstop Jhonny Peralta.
Rick Porcello (4-5) allowed two runs and 10 hits in seven innings.
Carlos Beltran had two hits and two walks for St. Louis.
The Cardinals loaded the bases in the sixth on a double by Matt Holliday, a walk by Beltran and a single by Allen Craig. Detroit played its infield back for a double play up the middle, and that's exactly what the Tigers got when Molina hit a ground ball to short.
The Tigers limited the damage to one run that inning, but managed only one more baserunner the rest of the game.
"Today was definitely a good step in the right direction, and I want to keep that going," Porcello said. "With this offense, if I can go out and throw seven innings and give up two runs, we're going to win a lot of games. If I can keep doing what I did tonight, we'll be OK."
Westbrook hadn't thrown more than seven innings in a game this year.
"He was awesome," St. Louis outfielder Allen Craig said. "When he's pitching like that, he's really fun to play behind."
Westbrook allowed only two hits after the third inning, and both were with two outs. Porcello had a similar outing but wasn't quite as effective.
"Being a contact pitcher and a ground-ball pitcher, you are going to give up hits," Porcello said. "At the same time, for every grounder or line drive that gets through, you should be able to get another one that gets you out of an inning and limits the damage."
Tigers catcher Gerald Laird left the game in the fifth with left hamstring cramping after tagging up and advancing from first to second on a deep flyout.
Austin Jackson had two hits for the Tigers and gave them a 1-0 lead with an RBI double in the third. That came after Laird hit a bloop single and went to second on an error by second baseman Daniel Descalso.
One out later, Skip Schumaker hit a single to left. Adams tried to score from second but lost his balance a bit coming around third, and outfielder Quintin Berry's perfect one-hop throw to the plate was in time.
The Tigers gifted St. Louis an insurance run in the eighth. Beltran drew a one-out walk against reliever Brayan Villarreal and went to second on a balk. With two outs, Molina hit a line drive that went off Peralta's glove for an error.
The Tigers optioned RHP Luke Putkonen to Triple-A Toledo to make room for RHP Jacob Turner, who will start Thursday. ... St. Louis RHP Chris Carpenter (right shoulder) threw a bullpen session of about 50 pitches and could pitch to some of the Cardinals' hitters later this week. ... Detroit LHP Drew Smyly (blister on left middle finger) is scheduled to pitch three innings in a rehab start with Triple-A Toledo on Thursday night. ... Turner makes his season debut for the Tigers on Thursday when he starts against St. Louis RHP Kyle Lohse (6-2). ... Tigers closer Jose Valverde missed the game with a sprained right wrist. Trainer Kevin Rand says Valverde will use a wrist immobilizer for the next two or three days, but the injury isn't expected to sideline him long.
Information from The Associated Press was used in this report.