The onions start out piled high in the Dutch oven, and for a while it can seem like nothing is happening. Then they soften, shrink, and turn a deep golden brown, leaving sweet, savory bits on the bottom of the pot. That slow change is what gives homemade French onion soup with Gruyere toast its rich base; rushing it leaves you with broth that tastes like onions instead of a soup built from them.
I like the way the dry white wine loosens those browned bits before the beef broth goes in. The thyme and bay leaf add a quiet herbal note, while Worcestershire brings a savory edge without taking over. A crisp baguette toast and bubbling Gruyere make each crock feel complete, but the soup underneath still has plenty of character on its own. The first spoonful should bring together tender onions, fragrant broth, and a little crunch from the bread.

Kitchen Note
Let the crocks stand for the full five minutes after broiling. The cheese stays molten, and the soup is still piping hot when it reaches the table.
Save this homemade French onion soup for its slow-cooked onions, bubbling Gruyere, and crisp baguette toasts.
Why the onions need nearly an hour before the broth goes in
Three pounds of sliced onions take up a surprising amount of room, and they need time to release moisture and cook down. During the first part of cooking, the onions soften and turn translucent; later, the moisture cooks away and the natural sugars brown. That progression is what builds the soup’s depth. A high flame can darken the bottom before the onions have softened, so medium-low heat and regular stirring matter more than trying to hurry the pot along.
Look for onions that are very soft and deeply golden, not pale and floppy or dark in scattered spots. The 45-to-60-minute window gives them time to reach that stage without scorching. Stir every 5 to 10 minutes, paying attention to the bottom and corners of the Dutch oven. Once the wine goes in, scraping up the browned bits turns what was stuck to the pot into part of the broth. Those bits are flavor, not something to wash away.
What the onions, wine, and broth each bring to the pot

- Yellow onions — Their savory sweetness deepens as they cook, making them a better fit here than a sharper onion. Slice them thinly and evenly so they soften at about the same pace; large uneven pieces can leave firm strands among the tender ones.
- Butter and olive oil — Butter gives the onions a rounded, savory flavor, while olive oil helps coat the large volume of slices as they begin to cook. Both are part of the foundation, so replacing the butter with oil alone changes the flavor and feel of the finished soup.
- Dry white wine — The wine loosens the browned fond and adds brightness to a broth made rich by the onions. Choose a dry wine rather than a sweet one. If you’re avoiding wine, use 1 cup of beef broth to deglaze; the soup will have less of that bright, winey lift.
- Low-sodium beef broth — Beef broth gives the soup its familiar deep, savory backbone. Low-sodium broth leaves more room for the onions and seasonings to come through; a standard full-salt broth can make the finished soup taste saltier.
- Fresh thyme and bay leaf — These herbs infuse the simmering broth without competing with the onions. Fresh thyme gives a gentle, clean herbal note; dried thyme can stand in if needed, but it may leave a stronger, more direct flavor in the soup.
- Worcestershire sauce — A small amount adds tangy, savory depth that rounds out the beef broth. It’s a supporting ingredient, so keep it in the background rather than adding extra to make the soup taste more strongly of the sauce.
- Baguette — A sturdy baguette gives you slices that can turn crisp in the oven and hold their shape when laid over the soup. Cut the slices evenly so they toast at the same rate and fit neatly into the crocks.
- Gruyere — Gruyere melts into a rich, nutty blanket and is the classic finish for this style of soup. Emmental or Swiss cheese melts well as a substitute, though the result is milder and less nutty.
Building the soup in stages, from golden onions to bubbling cheese
Cook the onions until deeply golden
Melt the butter and olive oil in a 5-quart Dutch oven over medium heat, then add the sliced onions, kosher salt, and sugar. Reduce the heat to medium-low and cook for 45 to 60 minutes, stirring every 5 to 10 minutes. The onions should become very soft and deeply golden, with much less volume than when they went into the pot. If you see dark spots forming before the onions soften, stir the bottom well and keep the heat at medium-low.
Deglaze, then simmer the broth
Pour in the dry white wine and scrape the browned bits from the bottom of the pot as it simmers. Give it 4 to 6 minutes, until most of the wine has evaporated; the bottom should look clean rather than coated with stuck-on fond. Add the beef broth, thyme sprigs, bay leaf, black pepper, and Worcestershire sauce. Bring everything to a simmer and cook uncovered for 25 to 30 minutes, then remove the thyme stems and bay leaf.
Toast the baguette until crisp
Heat the oven to 400°F and arrange the baguette slices in a single layer on a rimmed baking sheet. Bake for 8 to 10 minutes, turning each slice once. They’re ready when both sides feel crisp and look lightly golden, not deeply browned. Keep them in a single layer so the slices toast instead of steaming against one another.
Broil the cheese just until it bubbles
Set the oven to broil and divide the soup among six oven-safe 12- to 16-ounce crocks. Lay two baguette slices over each crock and divide the shredded Gruyere evenly over the tops. Set the crocks on a baking sheet and broil for 2 to 4 minutes, watching closely; the cheese should be melted and bubbling, not darkened or scorched. Let the crocks stand for 5 minutes before serving.
Easy ways to adapt the bread, broth, or cheese
Make it gluten-free with a different toast
Use gluten-free baguette in place of the regular baguette, cut it into 12 half-inch slices, and toast it the same way. The slices may be a little more delicate, but they still give each crock a crisp bread layer under the cheese.
Make a vegetarian pot
Replace the beef broth with the same amount of vegetable broth, and use vegetarian Worcestershire sauce and a vegetarian Swiss-style melting cheese. The soup will be lighter and less beefy, while the slow-cooked onions still give it a deep, savory base.
Use Emmental for a milder cheese top
Swap the Gruyere for the same amount of shredded Emmental. It still melts over the bread, but its flavor is gentler and less nutty, so the browned onions come through more clearly.
Storage and Reheating
- Refrigerator: Store the soup without the bread and cheese in an airtight container for 3 to 4 days. The onions soften further as they sit.
- Freezer: Freeze the soup without the toasts or cheese for up to 3 months. Thaw it in the refrigerator before reheating.
- Reheating: Warm the soup gently in a saucepan until steaming throughout, then toast the bread and assemble the crocks fresh. Don’t store or reheat assembled crocks if you want the bread to stay crisp.
Questions that come up when making French onion soup

Homemade French Onion Soup with Gruyere Toast
Ingredients
Equipment
Method
- Melt the butter and olive oil in a 5-quart Dutch oven over medium heat.
- Add the onions, salt, and sugar.
- Reduce the heat to medium-low and cook the onions for 45 to 60 minutes, stirring every 5 to 10 minutes, until deeply golden and very soft.
- Pour in the wine and scrape up the browned bits from the bottom of the pot.
- Simmer for 4 to 6 minutes, until the wine is mostly evaporated.
- Add the beef broth, thyme, bay leaf, pepper, and Worcestershire sauce.
- Bring to a simmer and cook uncovered for 25 to 30 minutes.
- Remove the thyme stems and bay leaf.
- Heat the oven to 400°F.
- Arrange the baguette slices in a single layer on a rimmed baking sheet.
- Bake for 8 to 10 minutes, turning the slices once, until crisp and lightly golden.
- Set the oven to broil.
- Divide the soup among six oven-safe 12- to 16-ounce crocks.
- Place two baguette slices on each crock.
- Divide the Gruyere evenly over the tops.
- Set the crocks on the baking sheet and broil for 2 to 4 minutes, watching closely, until the cheese is melted and bubbling.
- Let stand for 5 minutes before serving.