The best way to learn ANY language, not just Spanish, is immersion. Total immersion in the language and culture. In other words, living in a country that speaks the target language. Unfortunately, this is not a possibility for everyone. But, the remaining possibilities are many and varied.