In a large stock pot, fry onions and carrot in oil until soft. Add garlic and spices, frying for another 30 seconds.
Add tomatoes, corn, beans, broth and 2/3 of the cooked bacon (save rest for garnish). Bring to a boil then reduce heat and simmer for 30 minutes.
Use an immersion blender, or run soup through a food processor until smooth. Return to pot and continue to simmer until soup is reduced and has reached your desired consistency.
Season to taste with salt and pepper and add cilantro. Divide into bowls, and top with any garnishes you like.
Notes
For a vegetarian version, omit bacon and replace chicken stock with vegetable stock.