This rich, flavorful, classic French onion soup is easy-to-make with caramelized onions and garlic, vegetable stock, madeira wine, toasty bread, and melty cheese. It's the perfect cozy winter meal or for a fancy date night at home!
Melt butter in a large stockpot or Dutch oven over low heat.
Add in the onions, shallots, and garlic and season with salt and pepper. Cook slowly over low heat, until deep golden brown and caramelized, about 1 ½ to 2 hours. Be sure to stir occasionally so that the onions don't burn.
Stir in the flour and cook for 1-2 minutes (this removes the flour taste).
Add in the wine to de-glaze the pan, making sure to scrape up any browned bits from the bottom of the pan.
Stir in vegetable stock, thyme, and bay leaves. Bring to a boil; then reduce heat and simmer, stirring occasionally, until slightly reduced (about 20-30 minutes). Remove and discard thyme sprigs and bay leaves.
Taste and adjust seasonings as desired.
Preheat the oven to broil.
Lightly toast the bread slices for 1-2 minutes until crisp. Remove from the oven and set aside.
Divide soup into oven-safe ramekins or bowls. Place onto a baking sheet. Top with baguette slices to cover the surface of the soup completely then sprinkle with cheese.
Place into oven and broil until the cheese is melted and golden brown, 2-3 minutes.
The flavor of French onion soup deepens as it hangs out in the fridge, so this is a great make a ahead meal! Store in an airtight container in the fridge for up to 5 days.