Currently I use a method that lifts deep down stains and odors out quite well.
What you will need
-Hi-power vacuum
-Carpet Extractor (Small Bissel Cleaner or something of the sort)
-Shout Oxy Power
-2 Gal Bucket
-Medium Bristled Nylon Brush
What to do
-Vacuum out the upholstery or carpet
-Mix in the 2 gal bucket: 2 scoops of Shout Oxy Power and the rest with warm/hot water
-Stir it up with the brush and let it sit for 5 mins for the product to saturate into the water
-Proceed to then scrub the solution into the carpet. You will see the solution saturated into the carpet. Just scrub the solution in and work to your next area.
-When the entire area is saturated, begin where you begun scrubbing the first section. Proceed to extract the water solution out of the carpets/upholstery.
-Let it all dry and Voila!
Notes
-I say use a carpet extractor, but you can use a Wet/Dry Vac to suck out the solution. A bissel extractor works better though. Do your research, I am sure there is something at Wal-Mart that will work well. However, make sure you can get it into tight spaces.
-Repeat if necessary. For deep stains, just apply the solution and let it sit for about 20 mins.