Cook the bacon: In a large soup pot over medium heat, cook the chopped bacon until crispy. Remove with a slotted spoon and set aside, leaving some fat in the pot.
Sauté aromatics: Add butter to the pot. Sauté onions until translucent (3–4 minutes), then add garlic and cook for 30 seconds until fragrant.
Cook the potatoes: Add diced potatoes and broth. Bring to a boil, then reduce to a simmer. Cover and cook for 15–20 minutes until potatoes are tender.
Blend (optional): Use an immersion blender to partially blend the soup for a creamy texture while leaving some chunks.
Add dairy and cheese: Stir in heavy cream, milk, and shredded cheddar. Cook on low heat until the cheese melts, stirring constantly.
Season and finish: Add half of the cooked bacon and season with salt and pepper to taste.