01 - In a large pot or Dutch oven, cook the chopped beef bacon over medium heat until crispy. Remove with a slotted spoon and set aside, leaving about 2 tablespoons of fat in the pot.
02 - Add the unsalted butter to the pot. Once melted, add the onion, celery, and carrots. Sauté for 5 minutes until softened. Add minced garlic and cook for 1 additional minute.
03 - Stir in the all-purpose flour and cook for 2 minutes, stirring constantly to form a roux.
04 - Gradually pour in the broth while scraping the bottom of the pot. Add diced potatoes, smoked paprika, salt, and pepper. Stir to combine.
05 - Bring the mixture to a boil, then reduce heat and simmer uncovered for 15 to 20 minutes until potatoes are very tender.
06 - Using a potato masher or immersion blender, partially mash the potatoes to create a creamy texture while retaining some chunks for bite.
07 - Stir in whole milk and heavy cream. Simmer for 5 minutes, then add shredded sharp cheddar and mozzarella cheeses. Stir until fully melted and smooth.
08 - Return cooked beef bacon to the pot, reserving some for garnish if desired. Taste and adjust seasoning as needed.
09 - Serve hot, garnished with extra shredded cheddar cheese and chopped chives or green onions if desired.