I know that many products are available to assist the child in learning his math facts--computer games, video games, board games, audio CDs, etc., but I have found that the best way to master those math facts is to use good old-fashioned flashcards. The best flashcards that I have found to drill the math facts are the ones I have made myself.
I use medium or large sized unruled index cards and a marker to make flashcards. I make a set for each "number family" and keep each set together with a rubber band. It's that simple. The flashcards that I have made over the years for my 15 year old are the same ones that I am using for each younger child. I store all of the flashcards (addition, subtraction, multiplication and division) in a plastic box labeled "Flashcards".
I drill one set of cards at a time for about 5-10 minutes a day until they master that set. Then I add a new set while continuing to review the previously mastered sets. For example, Leah (1st grade) is currently drilling the 1+ and the 2+ number family sets. The"one" cards have printed on them all of the numbers 0-9 + 1. The "two" set has all the numbers 0-9 + 2 on them.
1+1, 1+2, 1+3, 1+4
2+1, 2+2, 2+3, 2+4
Of course I shuffle the cards each day before drilling them. I do not add a new set until the child can give the answer to each flashcard almost instantly. This comes from lots of practice, but once they commit the math facts to memory, they have them for a lifetime.