In a large skillet, heat the olive oil over medium heat. Add the ground beef and cook until browned, breaking it up into small pieces as it cooks. Once fully cooked, drain any excess fat and transfer the beef to your crockpot.
In the same skillet, add the butter and chopped onion. Sauté until the onion is soft and translucent, about 5 minutes. Add the minced garlic and cook for another minute until fragrant. Transfer the onions and garlic to the crockpot with the ground beef.
Add the diced potatoes to the crockpot, along with the beef broth, salt, pepper, smoked paprika, and thyme. Stir everything together to combine.
Cover the crockpot and cook on low for 6-8 hours or on high for 3-4 hours, until the potatoes are tender and fully cooked.
If you prefer a thicker soup, mix the flour with a small amount of the milk to create a slurry. Stir the slurry into the crockpot during the last 30 minutes of cooking.
Stir in the milk or half-and-half, shredded cheddar cheese, and sour cream. Continue cooking on low for another 20-30 minutes, until the cheese is melted and the soup is creamy and smooth.
Ladle the soup into bowls and garnish with extra shredded cheese, chopped green onions, or crispy bacon bits if desired. Serve hot with crusty bread or crackers on the side.