Electronics noob question(DC Motor)

Hi all, sorry if this is obvious or dumb but I don't know much about electronics other than the stuff I've been reading up about on google.

heres my question.

I took a pretty large DC motor from an old toy I found. Its not huge but its definitely bigger than a hobby motor or one of those computer fan motors. It has a capacitor attached to the negative and positive contact pads(or whatever they're called). It reads 100uF and 6.3v. Not sure what that means or why it needs a capacitor though :(.

Anyways, when I connect it directly to the 5v and GND pins on my arduino uno it works perfectly, but if I try to control it by sending either an analogWrite(p, 255) or digitalWrite(p, HIGH) it only 'budges' a little bit, but doesn't spin. (and if my crazy/slightly misinformed assumptions are correct, analogWrite(255) and digitalWrite(HIGH) are the same thing....right? because of the pwm thing)

I'm guessing that it doesn't receive enough voltage or something from the output pins. Also, even if I connect it to the 3.3v pin instead of the 5v pin it spins.

How would I be able to control it using my Arduino Uno? and it being a DC motor, I would not be able to control the speed am I right?

It jerks because it is drawing too much current from your arduino and may have damaged your processor.
Never connect motors directly to an Arduino.

Ever.

Use a motor shield

Oh shit.

Well it works perfectly fine... but I still won't be doing that anymore

But is there any way to use it without a motor shield?

You could use an R/C ESC (electronic speed controller) and the servo library.

But is there any way to use it without a motor shield?

Yes lots of ways, see:-
http://www.thebox.myzen.co.uk/Workshop/Motors_1.html