I found using Base 10 blocks really helped.
We did long division over a couple days.
First day my son did the problem with the blocks (say, how do you divide 357 by 2). Start by dividing the larger blocks (each person gets 1 hundred block), then we take the leftover hundred block & break it up into tens. Now we have 15 tens to share. Each person gets 7 tens & we have one left over. Break the ten into ones. We've got 17 ones. Divide them up & each person has 8 ones with one as a remainder.
Then we did the exact same problem again, but this time as he moved the blocks, I wrote the notation for the step.
We did this with a couple of problems on the first day - I did all the writing.
The second day I had him do a couple of problems. First, just using the blocks and writing down the final answer, then trying to write the standard notation. It can also help to use ruled paper turned sideways so you have columns to write in.
By the third or fourth day I had him doing the work just by hand with the traditional algorithm. If he got a problem wrong, I'd have him show me with the blocks.
I really think using the base 10 blocks made a huge difference to conceptual understanding.