Warm oil in a large saucepan over medium-high heat. Add onion, garlic, bell pepper, carrots and celery; cook, stirring occasionally, until softened, about 12 minutes. Add chili powder and cumin. Sauté for about 3 minutes.
Stir in broth and beans, then bring to a boil. Reduce heat to low and simmer for 25 minutes, stirring occasionally. Remove 2 cups of soup and puree in a blender. Stir pureed soup back into pot and cook 5 minutes longer. Season with salt and pepper.
Spoon soup into bowls, top with yogurt and cilantro and serve.