I’ve done a lot of digging regarding Arduino motor control without the 20$ motor shield. I’ve come up with a lot. It might seem like a lot of work at first but is really not all that complex.  You’ll need some capacitors 470uF and .1uF, motors and a motor driver like the L293D. I use this driver from SparkFun.

This instructable will show you a way that works, and a way that really works to drive DC motors.

http://www.instructables.com/id/Control-your-motors-with-L293D-and-Arduino/?ALLSTEPS

If you’re still wondering why one way works better than the other I highly suggest you read this article on power regulation and pick up the caps and diodes.