In a large dutch oven, heat olive oil over medium high heat. Add onion, carrot and celery, and cook for 2-3 minutes or until the onion is soft and translucent.
Add garlic, and cook for 1 minute or until fragrant.
Add black beans, diced tomatoes, vegetable stock, cumin, oregano, bay leaves, salt and pepper.
Give everything a stir, bring to a boil, then reduce the heat to a simmer. Partially cover with a lid, and allow to simmer for 30 minutes.
Remove from heat, discard the bay leaves and using a stick/immersion blender, blend about 2 cups of the soup for a creamy texture. You can also use a jug blender to do this.
Stir in fresh lime juice, and chopped cilantro if desired (highly recommended). Check the soup for seasoning, and add more salt or lime juice if desired.
Serve in bowls with your favorite toppings.