He began his professional career with a rookie-league stint, as well as with the Lewiston Broncs, compiling a .295 batting average in 70 games for them.
In 1970, Crosby played in 78 games for the Arkansas Travelers, where he had a .300 batting average. Part way through that season, he was promoted to the Cardinals' major league roster, where he played in 38 games primarily as a shortstop.[1][2]
After a year with the major league club, Crosby spent the 1971 season with the AAA Tulsa Oilers, hitting .287.[2] His fielding ability had taken a turn for the worse at shortstop, and he tried moving to second base during the offseason. He was supported in this by Travelers manager Ken Boyer, who joined the Cardinals as first base coach. As a result, Crosby made the major league roster in 1972 and was considered one of the team's bright spots early on.[3]
He played in 101 games for the Cardinals that season, then appeared in just 22 in 1973. On July 27, he was traded along with Gene Dusan to the Cincinnati Reds for Ed Sprague, Sr. and later Roe Skidmore.[1]
Before playing a game for the Phillies, the Cardinals purchased his contract, and shortly afterward traded him to the Cleveland Indians with Luis Alvarado for Jack Heidemann. Crosby played in 37 games for the Indians in 1974 and 61 in 1975, finishing his major league career with two final games played in 1976 with Cleveland, having spent most of the season with the Oilers. He was dealt from the Indians to the California Angels for minor-league outfielder Marty Friedman on December 10, 1976.[5]
He played three more years in the minor leagues before retiring.[1]