Williams attended Merced College. He was signed by Houston as an undrafted free agent in May 1972 and began his pro career in the Rookie-level Florida East Coast League that season. He reached the Triple-A level in 1975 and made his Major League debut on June 12 of the 1978 season in the eighth inning of a game against the Pittsburgh Pirates at the Astrodome. Pitching in relief of Joe Niekro with the Astros trailing 4–0, Williams allowed a run during his inning of work to make the score 5–0, Pittsburgh. But in the bottom of that inning, Houston scored six runs and won the game, 6–5. Williams (removed for a pinch hitter during Houston's six-run rally) was credited with the victory, while Joe Sambito picked up the save.[2]
The following year, he appeared in 31 games for Houston, and made 16 starts. In May 1979, he recorded two complete gameshutouts, the only two of his Major League career. On May 20, he blanked the San Diego Padres on five hits, beating future Hall of FamerGaylord Perry, 1–0.[3] Eleven days later, he went the distance and whitewashed the Cincinnati Reds on seven hits, 3–0.[4] He took a regular turn in the Astro rotation during June, but in July he transitioned to a spot-starter and relief pitcher "swingman" role. All told, he worked in 121+1⁄3 innings, won four of 11 decisions, and posted an ERA of 3.26.
Williams returned the minor leagues in 1980, but struggled to regain his effectiveness, and his Major League tenure was over. All told, in 156 MLB innings pitched, Williams surrendered 165 hits and 40 bases on balls. He struck out 54. His pro career ended after the 1982 season, his 11th in the game.