Heat a large dutch oven or stock pot over medium heat. Add the olive oil and diced onion. Season with a pinch of kosher salt (about ¼ teaspoon) and saute until the onion is tender– about 4 minutes.
Add the garlic and thyme and cook for an additional minute.
Next add the butter and stir until it has melted. Sprinkle over the flour and stir until the mixture begins to bubble– about 1 minute.
Add the chicken stock and potatoes. Stir to combine and season with another pinch of salt. Bring the soup to a boil and cook for 7-10 minutes or until the potatoes are fork tender.
Turn off the heat and remove 3 cups of soup (and potatoes) to a bowl and set them aside.
Add the whole milk and cream cheese to the soup. If you cut the cream cheese into cubes, it will incorporate more smoothly into the soup!
Use an immersion blender to puree the soup until completely smooth. If you don’t have an immersion blender, you can transfer the soup to a stand blender and blend until smooth.
Once the soup is smooth, place it over medium heat again.
Combine the shredded cheddar cheese and cornstarch in a small bowl. Add the cheese to the soup, stirring constantly until the cheese has fully melted.
Add the reserved potatoes back to the dutch oven and stir to combine. Season with additional salt and pepper to taste and enjoy.
Store any leftover soup in an airtight container in the fridge for up to three days. If the soup becomes too thick, thin it with additional chicken stock.