Heat oil in a large saucepan over medium heat. Add onion and cook, stirring, until beginning to soften, 2 to 3 minutes. Add chili powder and cumin and cook, stirring, 1 minute more. Add beans, water, salsa and salt. Bring to a boil; reduce heat and simmer for 10 minutes. Remove from the heat and stir in lime juice.
Transfer half the soup to a blender and puree (use caution when pureeing hot liquids). Stir the puree back into the saucepan. Serve garnished with sour cream and cilantro, if desired.