Problems running 2 stepper motors at the same time

ok, i have 2 stepper motors set up and running. The problem I have is that I can't really control them independently, because the step call is blocking.

So, to try to get around it, I just call for a few steps from each motor at a time, rapidly switching back and forth. But now how do I get back independent control? As it is, if I change the number of steps on one of the motors, or the speed, etc, it essentially slows down or speeds up the other motor by making it wait longer or shorter between calls. Is there any simple or clever way around this?

The issue is that I am trying to drive 2 peristaltic pumps, and I'd like to be able to vary their rates independently, without having a change in the rate of motor 1 affect the rate of motor 2.

Any ideas? I searched around here a lot, but couldn't find much...

In fact what you are doing - driving each one of the few steps at a time in rapid succession is what the OS of your computer is doing but very very fast. It schedules few processor cycles for the next application in the queue and after it's time is up, schedules the next. As it happens so fast it's not visible.
I am sorry if I am explaining to you something you know very well.
So the question is what is the speed you want to drive your motors with. One step of a motor is one instruction of the processor or in the case of the Arduino I think something like 40 instructions. 16 million instructions divided by 40 gives you quite a speed. You can easily schedule steps for each of the motors that at the end look like being driven separately. The problem is no different than driving multiple RGB leds or displaying on a VGA screen, problems already solved around here. Have a look at timers, it gives better and more accurate control over such tasks, and the ATMegas have enough of them to drive both your motors.