Heat olive oil in a large pot over medium heat.
Add chopped onion and cook until translucent, about 5 minutes.
Stir in minced garlic, red bell pepper, and carrot. Cook for another 5 minutes.
Add black beans, diced tomatoes, and vegetable broth. Stir to combine.
Season with cumin, chili powder, paprika, salt, black pepper, and cayenne pepper (if using).
Bring the soup to a boil, then reduce heat and let it simmer for 20 minutes.
Use an immersion blender to blend the soup slightly, leaving some chunks for texture.
Serve hot, garnished with fresh cilantro.