Dd did one sum a day. Get dc to repeat it five or six times throughout the day. Every few days have a break to revise what sums have already been done. This gets it from short term to long term memory.
Also, teaching them the tricks does help a lot.
Another variation on the 9 times table trick is to take one away from whatever you times by. That goes in the tens column. Whatever you have to add to it to make 9 goes in the units.
For the fives; if the number is even, halve it and times by ten. If odd, take one away first, halve it, times by ten, then add on five. Dd used to love the fact that that she knew her five times table right up into the thousands.
I also agree with idlevice on learning the square numbers.
Drawing squares and rectangles will help visualise times tables, and, by dividing the rectangles into strips, they can see how division is the opposite of multiplication.
You can then move on to number lines to help with division. So, say, start at twelve and ask how many lots of 3 can you get out of it. Then count back in threes four times. This will help with the idea of "chunking" when he gets on to long division.