Morris joined Derbyshire in 1980. He made his first class debut in the 1982 season against the touring Pakistanis and remained a consistent first team player for twenty one years.
Morris was picked for the three-match Test series at home against India in 1990. He took three catches in the first match and his highest score was 32 in the second innings of the third Test at the Oval, following on.
Morris was selected for the tour to Australia in 1990–1991, and performed adequately enough in the tour matches scoring an important century against Queensland just before the fourth Test. However, during an up-county tour game against Queensland at Carrara, Morris chose to join former Test captain David Gower in a practical joke that backfired. Gower piloted a small plane over the ground while play was continuing, with Morris as co-pilot. According to some reports, Gower "buzzed" the ground. England management responded by not selecting Morris for any of the Test matches, or indeed any Test match ever again. Both players were fined £1,000, the maximum under the terms of their contract, with Peter Lush and touring captain, Graham Gooch, considered sending the pair home from the tour.
Morris was selected for the end-of-tour One Day International series, his best performance was a top score of 63 not out in the first match at Adelaide, which was not enough to see England to victory. In his seven other ODIs, he only scored 20 or more runs on one occasion. Following the tour, Morris never played representative cricket for England again.
After a long career at Derbyshire, Morris moved to Durham in 1994; in the same year, while playing against Warwickshire, Brian Lara knocked a boundary from a delivery off Morris' bowling as he reached the highest score in first-class cricket history, 501 not out. He moved to Nottinghamshire in 2000 and retired in 2001.
Morris was a stocky, right-handed middle-order batsman and made 21,539 runs in 362 first class matches, including 52 centuries at an average of 37.72. He made 8,362 runs in 350 List A matches, with 10 centuries and an average of 27.06.
Morris was later employed as Head of Cricket at Derbyshire, but was sacked in May 2011, during the club's County Championship match against Essex.