I used to use a gravis gamepad pro, which was a lot like a playstation 1 controller that connects to the gameport. It worked perfectly.
then for quite a while I used a rewired Xbox original controller. There are instructions and drivers online. That is really cheap and works really well.
Lately though I'm using a Logitech Wingman Cordless. This thing works great.
I usually just use the keyboard for games that work best with a joystick. Esp. the "up for jump" type games. the cursor keys work great for that, or wasd.