Slice the onions thinly. Yes, you’ll cry a little, but it’s worth it. Heat the butter or oil in a pot over medium heat.
Cook onions slowly, stirring occasionally, until they’re deeply caramelized and sweet—about 20–25 minutes. If they start sticking, add a splash of broth to loosen them.
Add minced garlic and cook for another minute until fragrant. Swear you can smell savory goodness already.
Sprinkle in flour (if using) and stir to coat the onions. Cook for 1–2 minutes to remove the raw flour taste.
Pour in the vegetable broth and milk. Bring to a gentle simmer, then reduce heat. Let it bubble softly for 10–15 minutes to mingle flavors.
Season with salt, pepper, and thyme. Taste and adjust—salt is the boss here.
Use an immersion blender for a smooth, creamy soup right in the pot, or leave it chunky if you prefer texture. Blend until your desired consistency is reached.
Warm through, then ladle into bowls. Top with croutons, cheese, or chives if you’re feeling fancy.