Campbell played regularly for Otago under-age sides as a middle-order batsman from 1959-60 to 1965-66, when he captained the under-23 side. He made his first-class debut for Otago in 1963-64, scoring a total of 30 runs in three matches in the Plunket Shield. He played once in 1965-66, scoring 15 in his only innings. By 1967-68 he had developed his medium-paced bowling, and he played five games as an all-rounder, making 176 runs at an average of 19.55, including his first fifty, 69 against Central Districts, and taking four wickets at 52.25. He did not play in 1968-69, but he returned and established his position in the Otago side in 1969-70, making 249 runs at 27.66 and taking six wickets at 41.83 to help Otago win the Plunket Shield. In the first match he hit his first century, 108 not out against Wellington. In 1970-71 he scored 278 runs at 25.27 and took 12 wickets at 21.16, including 5 for 27 and 2 for 25 against Central Districts. He played for South Island against North Island in a trial match before the Tests against England late in the season, but with little success.
Playing for New Zealand
In the 1971-72 season in New Zealand he made 222 runs at 37.00 and took three wickets at 35.00. He was chosen to tour the West Indies with the New Zealand side in the following months as an all-rounder and reserve wicket-keeper, although he had not yet kept wicket in a first-class match. In six first-class matches he made 146 runs at 18.25 and took no wickets for 135 runs. He kept wicket in the match against Barbados. On his tour performance as a whole, Henry Blofeld's judgement was that Campbell was "not really up to it" as an international player. In 1972-73 Campbell had his best season with the bat, scoring 324 runs at 46.28, top-scoring in each innings with 111 and 63 not out in a victory over Central Districts. However, he did not bowl at all, and seldom bowled in subsequent seasons. He toured Australia with the New Zealand side in 1973-74, keeping wicket in the first three first-class games in place of Ken Wadsworth, who was ill. He played one other first-class game on the tour, finishing with 64 runs at 12.80, as well as 11 catches and a stumping.
Later career
He made 342 runs at 38.00 in 1974-75, forming part of another Plunket Shield premiership side for Otago, and played in another trial match, for The Rest against a New Zealand side. He continued to play in the Plunket Shield until 1978-79, scoring his third and final century, 101 not out, in a victory over Central Districts in 1977-78. He served as groundsman at Carisbrook, Otago's home ground, from 1984 to 1988. He is the father of Paul Campbell, who played a few matches for Otago between 1990 and 1997.