I swear by dishwashing (NOT dishwasher) liquid – whatever you use (Palmolive, Sunlight, Dawn) will work. Rub it into the spot and voila! My mom used to do this when I was a kid and it's all we use to remove stains from clothes…it's even removed red wine from my white tablecloth.
The best product I have found to remove stains from clothing is Zote soap. It is a large bar soap. I found it at Big Lots but have also seen it at grocery stores. You wet the area with cold water, rub in some soap and let it sit for 30 minutes to an hour then rinse and let air dry. It has taken out several things dropped on blouses including straight butter. When using dishwashing liquid I actually had a stain become a bleached spot so I don't use that any more. Zote has worked for everything I have used it on so far. Of course, don't put in the dryer until you know the discoloration is gone.
I usually use stain sticks like Tide and they usually work. For stubborn oil stains, I have used dish washing detergents with success. They are designed to clean oil and stains off dishes, so they shold work with fabrics. Although I would do a test spot first to make sure it doesn't bleach or stain the fabric.