Herr took over as St. Louis’ second baseman in 1980. With Ozzie Smith, he formed one of the best double play combinations in baseball, three times leading the NL in twin killings. He made only six errors at second base in 1984, nine in 1986, and seven in 1987. Not known for power, the selective switch-hitter did not get his first home run until his 337th major league game. Nonetheless, his speed and ability to make contact made him an excellent third-place hitter, especially in Busch Stadium with its distant fences and Astroturf. In 1981 and 1982 he did not go hitless more than two games in a row and in 1985 and 1986 he led Cardinals batters in RBI. Despite just eight home runs, he drove in 110 runs in 1985, becoming only the seventh second-baseman in history to reach the century mark. He batted .302 with 38 doubles and 31 steals that season, providing much needed run production for a St. Louis team that won the NL pennant even with slugger Jack Clark losing time to a rib injury. Herr also drove in 83 runs for the Cardinals pennant-winning 1987 squad.
Traded to the Twins for Tom Brunansky early in the 1988 season, Herr was a disappointment for Minnesota. They traded him to the Phillies for Shane Rawley after the season. He batted .287 for Philadelphia but drove in just 37 runs in 151 games. The following season he collected 60 RBIs in 146 games for the Phillies and Mets, but was out of baseball after batting .209 in 1991.