Peel and cut the potatoes into 1-inch cubes, then cut the broccoli into 1-inch florets. Chop the onion into small pieces and mince the garlic. Having everything prepped and ready will make the cooking process smooth and ensure nothing burns while you're chopping.
Heat the olive oil in a large pot over medium heat. Add the chopped onion and minced garlic, stirring constantly for about 1 minute until fragrant but not browned. This short cooking time releases the aromatics' flavors without burning them, which will create a flavorful foundation for the entire soup.
Add the cubed potatoes and broccoli florets to the pot with the sautéed aromatics, stirring for about 1 minute to coat them with the oil. Pour in the vegetable stock, then add the dried thyme. Bring to a gentle boil, then reduce heat to low, cover, and simmer for 15 minutes until the potatoes are completely tender and easily pierced with a fork.
Once the potatoes are completely soft, carefully blend the soup until smooth using an immersion blender. Work in batches if needed, and be careful with the hot liquid. I prefer using an immersion blender for soup because it gives you better control over the texture—you can make it as smooth or chunky as you like by blending longer or shorter.
Reduce the heat to low and stir in the milk until fully combined. Add the cheddar cheese in handfuls, stirring constantly until completely melted and the soup becomes creamy and rich. Season generously with salt and freshly ground black pepper to taste. Keep the heat low while stirring to prevent the milk from scorching and to ensure the cheese melts smoothly into the soup.
Ladle the hot soup into bowls and top each serving with extra shredded cheddar cheese. Serve alongside crackers for added texture and substance. I always add the cheese topping right before serving so it stays warm and slightly melted on top of the soup.