Westbrook (6-6) -- who is in his 12th season in the majors -- gave up an unearned run on five hits and struck out five. He had a career-best five shutouts during the 2004 season while with Cleveland.
This was his first complete game since May 16, 2010. He has 14 overall.
St. Louis trailed 1-0 heading into the fifth, but Daniel Descalso tied it in that inning with a sacrifice fly and Matt Holliday scored the go-ahead run in the sixth when Yadier Molina grounded into a double play.
A fielding error by shortstop Jhonny Peralta in the eighth allowed Molina to score the final St. Louis run.
Rick Porcello (4-5) took the loss, giving up three runs on 10 hits in seven innings.
Detroit had won three in a row.
2014: NFL Cheerleaders [PHOTOS]
Julius Randle breaks leg during NBA debut