Ultimately, you need an h-bridge driver of some sort to control the motors fully (to be able to vary their speed with PWM, and change their directions). There is no way around this. But there are cheaper ways than an Arduino motor shield.
But would the Arduino have enough power to control just one 3V motor?
There are many ways to control a motor without having to buy a shield. Have a read of this:-http://www.thebox.myzen.co.uk/Workshop/Motors_1.htmland the other motors pages on my site.
Please enter a valid email to subscribe
We need to confirm your email address.
To complete the subscription, please click the link in the
email we just sent you.
Thank you for subscribing!
via Egeo 16