I can think of three parts to memorizing math facts:
1) First, get the fact into memory, so that it can be recalled.
2) Second, develop fluency, or automaticity, so that it can be recalled without thinking.
3) Third, practice recalling the fact frequently enough to maintain automatic recall.
1) For many students, just practicing with the fact for a little while is all it takes to get it into memory. However, if they keep forgetting, if they struggle to learn it, or if you just want to make the learning process more interesting, you can try something else. Tricks can work pretty well. For example, multiplying a number times 2 is the same as the double of the number in addition, 7 x 2 = 7 + 7; or solving 7 x 8 by counting, 56 = 7 x 8 (5,6,7,8). Tricks work well for the 9's. Mnemonic devices, or stories, have proven to be the best for students with learning disabilities, but they work for everyone. For example, "You have to be 16 to drive a 4 x 4, because 4 x 4 = 16", or, picture a football coach feeding his 7 linemen 7 cans of beans each, so they can beat the '49ers. A word of caution: we can only learn 1 or 2 things at a time, so when you finish with the 2's, for example, go ahead and introduce the three's, make sure that they understand that the reciprocals are the same (commutative property), or that 2 x 3 = 3 x 2. If they do, practice with those facts in with the facts they already know. If all is OK, add the first new fact, 3 x 3. If you are using flashcards, have a pile of flashcards they can already answer automatically. Take one card from the known stack and add the new card. Go through the stack a few times. If they consistently get the new card correct, add a second card from the known stack. If they consistently get the new fact correct, add another, and so on, until you have at least 11 total cards in the hand you are working with. You are slowly making it more difficult for them to remember (distributed practice), which helps them remember it better. Don't add 3 x 4 until they can go with at least ten facts in between attempts, and still get it correct. If they can still remember today's two new facts tomorrow, add another 1 or 2. Just remember that frustration comes when the student is required to learn more new facts, when the old ones still are not known.
2) The only way to get from there to automatic recall is repeated practice. The trail to the answer in the brain has to be well traveled so that it can be recalled instantly, bypassing working memory. Make two stacks of cards; one for automatic recall, and one for facts they had to work on. (It starts to get tricky deciding which is which.) Then work on distributed practice, like in 1).
3) To maintain what they have learned, students need to regularly practice facts, or they forget them, like over summer. (The only certainty of learning is forgetting.) Depending on your curriculum, they may be getting enough practice already, or they may still need a little extra. You really want that practice to focus on the facts that are least well known. (slowest response times)
Learning math facts does not work well when every student has to progress at the same speed. It really calls for individualized instruction, which is where computers can help, a lot. Good software individualizes to each student. It knows which answers were automatic, and which ones required extra thought, or fingers. It knows which facts have the slowest responses, and it gives those extra practice. The cheapest such software? Math Facts Pro! (I bet you didn't see that coming:)