Williams went to school at St Edward's Church of England Secondary Schools in Romford, Essex. He started out as an apprentice with Southampton, having been a product of the Saints' London Selection Centre and joining the club straight from school. He turned professional in 1975 and made his debut aged 17 on 6 April 1976, in a 1–0 victory away to local rivals, Portsmouth in a game where Peter Osgood was dropped for disciplinary reasons. He went on to establish himself as a talented midfielder, particularly with his passing ability and composure on the ball. After his first full season at Southampton in 1976–77, he was awarded the club's Player of the Season Award and earned recognition for England at under-21 level. In the 1978–79 season, he was an ever-present in Saints' run to the 1979League Cupfinal which they lost 3–2 to Brian Clough's Nottingham Forest. He succeeded Alan Ball as team captain and led The Saints to an F.A. Cup semi-final and to runners-up position in the 1983–84First Division. The following season, manager Lawrie McMenemy was becoming disillusioned with Southampton, feeling that he had taken the club as far as he could. This disillusionment spread to several key players including Williams, leading to a transfer request. In December 1984 he was transferred to Arsenal for a club record £550,000. In all, he played 349 times for Southampton, scoring 27 goals.
Arsenal
In December 1984 Williams moved to his boyhood club Arsenal for £550,000. After making his debut in a North London derby match against Tottenham Hotspur on 1 January 1985, Williams was a regular for the rest of the season, playing another seventeen matches and showing the same promising form he had shown at Southampton. However, his next season, 1985–86, he suffered toe and hamstring injuries which limited his appearances in the side. By the time he had recovered, George Graham had taken over as Arsenal manager, and initially Williams thrived, playing on the right hand side of midfield, alongside a young David Rocastle. In Graham's first season, Arsenal reached the LeagueCup final, where they beat Liverpool, with Williams collecting his first piece of silverware. Williams continued to play throughout the next season, but after Arsenal lost to Manchester United in January 1988, Williams was dropped to allow Michael Thomas to push forward into midfield, with new signing Lee Dixon taking over his place at right back. Unable to reclaim his place in the side, Williams fell out with Graham, and in July 1988 he moved to Luton Town. In all he played 121 games for Arsenal, scoring five goals.
Williams spent three seasons at Luton, before finishing his career at Exeter City, where he was also assistant manager to his former Southampton colleague, Alan Ball. His eventually retired in 1993, after a brief playing spell at Derry City where he made his League of Ireland debut against Shamrock Rovers in October 1993.
International career
Williams played fourteen times for England's under-21s. He also won six caps for England, his debut coming against Australia on 12 June 1983.
After football
After retiring from football, he went into the magazine publishing business in Exeter. This turned out to be a very successful venture and he eventually sold out to a partner. By 2003, he became involved in a property development enterprise in Devon which is still in operation.
Honours
Southampton
League Cup: 1979 - Runners-Up Medal
Football League Division One: 1983–84 - Runners-Up Medal