Cook the bacon in a large Dutch oven or soup pot over medium heat until crisp, about 6 to 8 minutes - flipping half way through. Transfer to a paper-towel-lined plate, crumble once cool, and set aside. Pour off all but about 1 tablespoon of the bacon fat (or leave it and skip the olive oil, if you prefer).
Add the olive oil to the pot along with the onion, celery, carrot, bell pepper and a light sprinkle of salt. Cook over medium heat, stirring occasionally, until the vegetables are soft, about 10 to 12 minutes.
Stir in the garlic, cumin and red pepper flakes and cook until fragrant, about 30 seconds. Pour in the beans and broth and bring to a simmer over medium-high heat. Cook, reducing heat as necessary to maintain a gentle simmer for about 20 to 25 minutes.
Transfer about half the soup to a stand blender, securely fasten the lid, and blend until smooth (never fill your blender past the maximum fill line, and beware the steam that escapes from the top of the blender, it's very hot). Or, use an immersion blender to blend a portion of the soup directly in the pot.
Return the pureed soup to the pot, stir in the cilantro, crumbled bacon, vinegar/lime juice and salt and pepper, to taste. Garnish and serve.