Verlander (7-4) won his second straight start despite walking four batters, matching a season high. The Tigers ace also worked around five hits to allow only one run through six frames.
The right-hander was touched for two unearned runs on left-fielder Quintin Berry's error in the seventh. He struck out three batters to raise his MLB-best total to 106.
The Cardinals' Lance Lynn (10-3) absorbed the loss, yielding five runs on nine hits before exiting after five full frames.
Matt Holliday got the only RBI for St. Louis.