De Villiers set the new landmark by making a century in 31 balls, during an innings of 149 against the West Indies in Johannesburg.
He hit eight fours and 10 sixes. He beat the previous ODI record of 36 balls by New Zealand all-rounder Corey Anderson against West Indies last year.