A second baseman for TSN's College All-America team in 1977 and 1978, Horner set a then-NCAA record of 58 career home runs for Arizona State, set a 25-homer single-season record, and was selected the MVP of 1977 College World Series.

In 1979 Horner batted .314 with 33 homers and 98 RBI; In 1980, Horner batted .268, 35 HR, 89 RBI despite being sidelined for 79 games in both seasons after recurring shoulder and leg injuries. In the strike-shortened 1981 season he hit .277, 15 HR, 42 RBI in 79 games. Horner enjoyed his best statistical season in 1982, finishing with 32 home runs, 97 RBI, and an OBP of .350 while slugging .501.

In August 1983 Horner was hitting .303 with 20 homers and a career-high OBP of .383 when he fractured his right wrist while sliding, missing the last 43 games of that season. In May 1984, Horner broke the same wrist while diving after a ball and he was sidelined for the rest of the season.

In 1985 Horner played 130 games and finished with a .267 BA, 27 HR and 89 RBI. In 1986, Horner set personal highlights. On July 6, 1986 in a game against the Expos, he became the eleventh player in Major League Baseball history to hit four home runs in a single game, and only the second one to do so in a game that his team lost (the first one being Ed Delahanty). Later in the season, after hitting a record 210 career home runs without a grand slam, Horner finally belted a homer with the bases loaded to give the Braves a 4–2 victory over the Pirates. Horner's record stood until 1998 when Sammy Sosa hit a grand slam, the 248th home run of his career, to surpass Horner's mark.

Horner became a free agent in 1987, after his first season of over 500 at bats. Although Horner was still near his peak, the Major League clubs were then colluding to drive down salaries, so no offers were made to Horner, who consequently signed a one-year contract with the Yakult Swallows of the Japanese League. He hit 31 homers and had 73 RBIs for the team. He was given number 50 by the organization because that was the number of home runs they expected him to hit.

Horner returned to the majors in 1988 with the St. Louis Cardinals, but after 60 games he injured his left shoulder. After being invited to spring training by the Baltimore Orioles in 1989, Horner announced his retirement.