Willoughby made his one-day debut for Boland in October 1994 against Orange Free State. Opening the Boland bowling, he finished the match with 1/44, claiming future South Africa national teamhead coachMickey Arthur as his first wicket. His first-class debut came just under two weeks later, against Transvaal. Willoughby claimed three wickets in the first-innings, and two more in the second as the match was drawn. He finished his first season with 15 first-class wickets, at a bowling average of 35.73. In the 1998–99 season, a string of good performances saw Willoughby selected to play for South Africa A against the touring West Indians. Although his first match in international colours passed without him standing-out, in the following match for Boland, also against the West Indians, Willoughby claimed his maiden five-wicket haul, finishing with figures of 5/60, including the wicket of Brian Lara. By the end of the season, he had claimed 36 first-class wickets, almost double the number he had taken previous to that summer. He made his international debut late in the following 1999–2000 season, appearing in a Coca-Cola Sharjah Cup match against Pakistan. Opening the bowling, Willoughby claimed two wickets in a 65 run defeat. After spending the winter playing club cricket in England, Willoughby was selected to tour the West Indies with South Africa A, where he played two matches against Barbados and four against West Indies A. He joined Western Province for the 2000–01 season, where he remained until the end of the 2004–05 season, when he joined Cape Cobras. Three wickets for South Africa A in each of the one-day matches against 'The Rest' in February 2003 led to his inclusion in the One Day International squad for the 2003 TVS Cup in Bangladesh. He played twice in the tournament without taking a wicket, and hasn't appeared for South Africa in ODIs since. His Test debut came during the same tour, during the first Test against Bangladesh in April 2003. He claimed a solitary wicket, that of Mohammad Ashraful during the match. He retained his place in the Test squad for the tour of England, playing in three tour matches and the first Test at Edgbaston. In a drawn match, he bowled 20 overs in the first-innings without taking a wicket, and wasn't asked by captain Graeme Smith to bowl in the second.
England
He has also played for Leicestershire in 2005 and for Somerset from 2006. In 2006 he was the leading wicket taker for Somerset in first-class cricket as he took 66 wickets at an average of just over 25 in a season which included career bests of 47 batting against Worcestershire and 7/44 against Gloucestershire. He also performed consistently in 2007, a season in which Somerset achieved promotion to the first division of the County Championship as well as the Natwest Pro40. It was announced in November 2011 that Willoughby has joined Essex on a two-year deal.