The fallacy here is that the students did not pay £9 each for the pizza. They paid £8.33 each to the nearest penny, with the delivery boy pocketing the extra due to them. 3 x £8.33 + £3 change + £2 kept by the boy = £29.99. When I first came across this puzzle in the early 60's, prior to the decimalisation of our currency, the solution was much neater, in that each student paid £8 - 6s - 4d which when multiplied by three and adding the £2 and £3 comes to exactly £30. By the way, at the time I first heard it they were not students but rich businessmen having the full works at a posh restaurant. This was a time when £8 per week was a very good wage for a well-educated school-leaver.
Ah! Nostalgia isn't what it used to be!