Step 1: Cook the Bacon : In a large pot or Dutch oven, cook chopped bacon over medium heat until crispy. Remove with a slotted spoon and place on paper towels to drain. Leave about 1 tablespoon of bacon fat in the pot for flavor (discard the rest).
Step 2: Sauté the Aromatics : Add onions to the pot and sauté for 3–4 minutes until translucent. Stir in minced garlic and cook for another 30 seconds until fragrant.
Step 3: Add Potatoes and Broth : Add the diced potatoes and pour in the chicken broth. Season with salt, pepper, and red pepper flakes (if using). Bring to a boil, then reduce heat and simmer uncovered for about 15–20 minutes, or until potatoes are tender.
Step 4: Mash or Blend (Optional for Creaminess) : For a creamier texture, lightly mash some of the potatoes in the pot with a potato masher, or use an immersion blender to partially blend the soup. Leave some potato chunks for texture.
Step 5: Add Spinach and Finish the Soup : Stir in the chopped spinach and cook for 2–3 minutes until wilted. Add milk or cream and butter (if using) to create a silky consistency. Stir in grated Parmesan, if desired. Return the crispy bacon to the soup (reserving a little for garnish). Taste and adjust seasoning with salt and pepper.
Step 6: Serve and Garnish : Ladle the soup into bowls. Top with extra bacon, chopped herbs, and a sprinkle of cheese. Serve warm with crusty bread or garlic toast on the side.