If using dried beans, soak them overnight in plenty of water. Drain and rinse before cooking.
In a large pot, add the soaked beans and cover with chicken or vegetable broth. Bring to a boil, then reduce the heat to low and simmer for 1-1.5 hours, or until the beans are tender. If using canned beans, skip this step and move to the next.
In a separate pan, heat olive oil over medium heat. Add the chopped onion and garlic and cook until softened and translucent, about 5 minutes.
Add the bell pepper and carrot and cook for another 5 minutes.
Add the cooked onions, garlic, bell pepper, and carrot to the pot with beans.
Stir in the ground cumin, paprika, dried oregano, bay leaves, and tomato paste.
Season with salt and pepper to taste.
Simmer the soup for another 20-30 minutes, allowing the flavors to meld together. If the soup is too thick, add additional broth or water to reach desired consistency.
Remove the bay leaves from the soup.
Ladle the soup into bowls and garnish with fresh cilantro.
Enjoy your meal!