Williams signed for a base salary of $820,000 with incentives that can increase his earnings to $940,000.
Williams returned from a four-year major league hiatus to go 4-0 with a 3.68 ERA in 10 games for the Angels last season.
He is the favorite to be the team's fifth starter out of spring training, joining a rotation that already had Jered Weaver, Dan Haren and Ervin Santana before signing Texas Rangers ace C.J. Wilson to a five-year, $77.5 million contract last week.
"It's crazy," Williams said. "Just look at those four guys, what they've done the past year or two, it's been amazing. Hopefully, I'm thrown in the mix. I think we're the team to beat. Hopefully, we show that when we go out there."
Williams began the 2011 season with the Lancaster Barnstormers of the independent Atlantic League.
Mark Saxon covers the Angels for ESPNLosAngeles.com.