Brown the beef: Heat a large pot or Dutch oven over medium-high. Add the ground beef and a pinch of salt.
Cook, breaking it up, until browned and no pink remains, 5–7 minutes. Drain excess fat if needed and set the beef aside.
Sauté the aromatics: In the same pot, melt 2 tablespoons butter. Add onion, carrots, and celery with a pinch of salt.
Cook until softened, 5–6 minutes. Stir in the garlic and cook 30 seconds until fragrant.
Add potatoes and seasonings: Return the beef to the pot. Stir in paprika, Worcestershire, and mustard.
Add the diced potatoes and the broth. Scrape up any browned bits from the bottom—they add flavor.
Simmer: Bring to a gentle boil, then reduce to a simmer. Cook uncovered until the potatoes are tender, about 12–15 minutes.
Taste and season with salt and pepper.
Make a quick roux: In a small saucepan, melt the remaining 2 tablespoons butter over medium heat. Whisk in the flour and cook for 1–2 minutes until it smells nutty. Slowly whisk in the milk or half-and-half until smooth and slightly thickened, 2–3 minutes.
Thicken the soup: Pour the milk mixture into the soup while stirring.
Simmer 2–3 minutes to let it meld and thicken lightly.
Add the cheese: Reduce heat to low. Gradually sprinkle in the shredded cheddar, stirring gently until melted and smooth. Do not boil after adding the cheese.
Adjust seasoning with salt, pepper, and a splash more Worcestershire if desired.
Serve and garnish: Ladle into bowls. Top with chopped pickles, green onions or chives, and bacon bits if using. Crack some black pepper over the top.
Serve with crusty bread if you like.