Best French Onion Soup Recipe: Caramelized Onions Over Creamy Gruyère Velouté

Soups & Stews

Best French Onion Soup Recipe: Caramelized Onions Over Creamy Gruyère Velouté

French onion soup begins with the right onions—yellow and sweet—slowly caramelized until they melt into a deep, golden sweetness that forms the soul of this dish.

This recipe delivers the best version I've ever made, with layers of flavor from perfectly cooked onions, rich beef broth, and a velvety Gruyère velouté that transforms ordinary soup into something extraordinary.

The key lies in patience: letting those onions cook for 45 minutes until they're tender, sweet, and deeply aromatic.

What sets this French onion soup apart is the balance of textures and flavors—crispy bread on top, creamy velouté beneath, and onions so tender they practically dissolve.

I use a combination of yellow onions and pearl onions for depth, and the slow caramelization process develops complex sugars that elevate every spoonful. The beef broth builds a hearty foundation, while the Gruyère cheese adds a nutty richness that ties everything together.

By the time you bake it, you'll have a dish that's warm, comforting, and impossible to resist—the crispy bread topping soaks up the creamy velouté while staying perfectly golden.

The aroma alone will have everyone gathering around the table, and the first bite delivers that perfect harmony of sweet, savory, and umami flavors. This is the kind of soup that feels like a hug in a bowl.

The best part? It's easier than it looks, and the results are worth every minute. Whether you're serving it as a starter or a main course, this French onion soup will become a regular on your dinner menu. Let's get started on creating the perfect bowl.

👨‍🍳
Difficulty
Medium
🥩
Diet
Meat
🔥
Calories
Med Cal

Ingredients for best onions for french onion soup

Sweet yellow onions and tender pearl onions caramelize into golden perfection—this is where the magic begins.

Ingredient Amount Notes
Yellow Onions 🧅 3 whole Large, sweet varieties preferred
Pearl Onions 🧅 1 lb Whole, peeled if preferred
Unsalted Butter 🧈 ½ cup European-style preferred
Beef Broth 🍲 6 cups Homemade or high-quality store-bought
Gruyère Cheese 🧀 2 cups Freshly grated, aged variety
All-Purpose Flour 🌾 ¼ cup For velouté thickening
Heavy Cream 🥛 ½ cup Full-fat for creaminess
Garlic Cloves 🧄 3 cloves Minced for depth
Baguette 🥖 1 whole Crusty, day-old preferred
Olive Oil 🫒 2 tbsp For bread topping
Salt 🧂 1 ½ tsp Kosher or sea salt
Black Pepper 🌶️ ½ tsp Freshly ground
Thyme Leaves 🌿 1 tbsp Fresh or dried

The onions are non-negotiable here. Yellow onions need to be sweet—Vidalia or Maui are my go-tos, but any yellow will work if they're fresh. Pearl onions add that delicate sweetness that balances the deep caramelization. Whole Foods or Trader Joe's usually have the best selection, but check your local market's produce section. Look for onions that feel heavy for their size—those are packed with flavor. The Gruyère? Martha Stewart's or Cowgirl Creamery make excellent aged varieties, but any good-quality Gruyère will work. Freshly grated is a must—pre-grated gets clumpy and loses its melt.

No beef broth on hand? Vegetable broth with a splash of soy sauce gets you close, though it'll taste different. Fresh thyme is ideal, but dried at one-third the amount works in a pinch. The butter matters—European-style or ghee handles the high heat better than regular butter. If you're making a big batch, Costco sells bulk Gruyère that's perfect for grating. The baguette? Day-old works best—it's easier to slice and won't get soggy. No baguette? A crusty loaf of French bread from the bakery section does the trick.

This soup tastes even better the next day—3-4 days in the fridge, honestly. The velouté thickens up nicely when chilled. For the bread topping, toast it separately before adding it to the soup so it stays crispy. Freezes beautifully for up to 2 months—just reheat the soup portion without the bread topping. I always make a double batch because it disappears so fast. Store the bread topping separately in a paper bag to keep it extra crispy.

❤️

Why You'll Love This Recipe

  • One-Pot Magic: I swear by this recipe—just onions, butter, and broth in one pot, then topped with melty Gruyère. No extra dishes, no stress. The pearl onions add that perfect bite without extra effort.
  • Umami Bomb: That slow caramelization of yellow onions? Rich, deep, and impossible to resist. Add the beef broth and Gruyère, and suddenly you’ve got a flavor so bold it feels like a hug in soup form.
  • Weeknight or Weekend: Honestly, this works for everything. Too tired for dinner? Toss it together in 30 minutes. Hosting a crowd? Double the batch—it’s just as easy. Even my picky college-aged son loves it.
  • Leftovers That Don’t Suck: Most soups turn sad after day two, but not this one. The cheese stays crispy, the broth stays rich, and honestly? I’ll reheat it for lunch three days in a row without complaint. Budget-friendly, too—just a few ingredients stretch into multiple meals.

Step-by-step instructions for French onion soup

Here's how to create the ultimate French onion soup with perfectly caramelized onions and rich Gruyère velouté.

1

Caramelize the Yellow Onions

Start by cutting the 3 whole yellow onions in half lengthwise and then slice them into ¼-inch thick half-moons. Melt the 0.5 cup unsalted butter in a large Dutch oven over medium-low heat. Add the onions and sprinkle with 1 teaspoon of the 1.5 teaspoon salt. Stir to combine and let them cook undisturbed for 20 minutes.

This is where the magic happens. You want the onions to slowly break down and develop deep caramelization. Stir occasionally, scraping up any browned bits from the bottom of the pot. You'll know they're ready when they're a rich golden brown color and have reduced down to about 2 cups of jammy onion mixture. This process should take about 30-40 minutes total.

2

Add Pearl Onions and Build the Velouté

Peel the 1 lb pearl onions and add them to the Dutch oven with the caramelized yellow onions. Cook for an additional 5 minutes until they begin to soften. Stir in the 3 cloves minced garlic and cook for 30 seconds until fragrant.

Sprinkle the 0.25 cup all-purpose flour over the onions and stir vigorously for 2 minutes to cook off the raw flour taste. Slowly pour in the 6 cups beef broth while stirring constantly to prevent lumps. Add the remaining 0.5 teaspoon salt and 0.5 teaspoon black pepper. Bring to a gentle simmer and let cook for 15 minutes until the soup has thickened slightly.

3

Finish with Cream and Cheese

Reduce heat to low and stir in the 0.5 cup heavy cream and 1 tablespoon thyme leaves. Let it warm through for 2-3 minutes. Remove from heat and stir in the 2 cups freshly grated Gruyère cheese until completely melted and smooth. Taste and adjust seasoning if needed.

Here's the thing—this is where the soup transforms from good to incredible. The Gruyère should melt into a luxurious, creamy sauce that coats every spoonful. If the soup seems too thick, whisk in 1-2 tablespoons of hot water to reach your desired consistency. Keep the soup warm in the Dutch oven while you prepare the bread topping.

4

Toast the Baguette Slices

Slice the 1 whole baguette into ¼-inch thick diagonal slices. Brush both sides generously with the 2 tablespoons olive oil. Arrange the slices on a baking sheet in a single layer and toast in a preheated 375°F oven for 8-10 minutes until golden brown and crisp.

Watch them carefully—they should be crisp enough to hold their shape when lifted. If they brown too quickly, reduce the oven temperature to 350°F. The toasted bread is the perfect crunchy contrast to the creamy soup.

5

Assemble and Serve

Ladle the warm onion soup into oven-safe bowls, filling each about ¾ full. Top each serving with 2-3 slices of the toasted baguette. Place the bowls on a baking sheet and broil for 3-5 minutes until the cheese on top is bubbly and golden brown.

This final step creates the signature cheese topping that makes French onion soup so irresistible. The broiler should melt the cheese into a delicious blanket over the soup while keeping the bread crispy. Serve immediately while the cheese is still bubbly and the bread is warm.

👨‍🍳

Pro Tips For Making Best Onions For French Onion Soup

  • CARAMELIZE LOW AND SLOW: The first 20 minutes are where the magic happens—keep the heat at a steady medium, not high. I used to rush this and ended up with bitter, burnt onions that ruined the whole dish. A good rule: if you’re sweating over the pan, you’re doing it right.
  • PEEL PEARL ONIONS LAST MINUTE: Pearl onions take forever to peel if you do it ahead. Save time by leaving the skins on until you’re ready to cook them—just give them a quick soak in hot water for 10 minutes first. Their texture changes completely when cooked fresh, and you’ll avoid the dry, rubbery mess that comes from pre-peeling.
  • SALT THE BROTH LATE: Hold off on seasoning the beef broth until the very end, even if it’s unsalted butter you’re using. The onions release so much natural sweetness and salt during caramelization that you’ll likely need less than you think—adding salt early can throw off the balance.
  • USE GRUYÈRE’S BROTH: Save the leftover cheese from grilling your soup tops—it’s got flavor. Crumble it into the broth while it simmers for the last 10 minutes. It’s not a strict rule, but it adds depth that store-bought cheese just can’t match. (Yes, it’s a tiny extra step, but your soup will taste like you put in effort.)

Regional styles of this recipe

French Classic Style

In Parisian bistros, the onion soup is all about simplicity and depth. They use yellow onions exclusively, caramelizing them for up to 60 minutes to create a jammy, sweet base.

The velouté is made with beef broth and a splash of white wine, then finished with Gruyère and Comté cheese for that signature nutty flavor. The bread topping is always baguette slices, toasted separately and placed on top just before serving. 🥖

Lyon's Hearty Version

Lyon takes their onion soup to the next level by adding lardons (diced bacon) and a touch of Dijon mustard to the velouté. They also use both yellow and shallots for a more complex flavor profile.

The cheese topping often includes a mix of Gruyère and Emmental, creating a richer, creamier finish. This version is heartier and perfect for cold weather. 🧀

Alsatian Twist

The Alsace region adds a unique touch with crispy fried onions on top instead of baguette slices. Their version includes a splash of Riesling wine in the broth and finishes with a mix of Gruyère and Munster cheese for a tangy-sweet contrast.

The soup is often served in individual cast-iron pots, making it perfect for sharing. 🍷

Southern French Adaptation

In the south, they often use more garlic and a hint of saffron in the velouté, giving the soup a golden hue and extra depth. The bread topping is sometimes replaced with toasted country bread and sprinkled with herbes de Provence.

This version is lighter but equally flavorful, perfect for a summer dinner. 🌿

Modern Fusion Approach

For a contemporary twist, try adding roasted garlic and a touch of smoked paprika to the caramelized onions. Some chefs even incorporate a splash of balsamic vinegar at the end for a sweet-tangy balance.

The cheese topping can be elevated with a mix of Gruyère and Parmesan, adding an umami richness that modern palates love. 🔥

Nutrition facts

Servings 4
Amount Per Serving
Calories 580kcal
% Daily Value *
Total Fat 38g49%
Saturated Fat 24g120%
Cholesterol 120mg40%
Sodium 1250mg54%
Total Carbohydrate 32g11%
Dietary Fiber 4g14%
Sugars 8g
Protein 22g44%
* Percent Daily Values are based on a 2,000 calorie diet. Your daily values may be higher or lower depending on your calorie needs.

Frequently asked questions

1

Can I substitute pearl onions with regular yellow onions?

You can, but the texture and flavor will differ slightly. Pearl onions add delicate sweetness and a tender bite that complements the caramelized yellow onions. If substituting, use 1 cup of finely chopped yellow onions (about 1 medium) to match the volume. The dish will still be delicious, just with a slightly different balance of flavors.

2

How do I know when my onions are perfectly caramelized?

Perfect caramelization happens when the onions turn deep golden brown and have reduced to about 2 cups of jammy mixture. They should smell intensely sweet and almost jam-like. Stir occasionally to prevent burning, and scrape up any browned bits from the bottom—they're packed with flavor! This process takes 30-45 minutes at medium-low heat.

3

What if my soup turns out too thick or too thin?

For a thicker soup, stir in 1-2 tablespoons of cold water or broth while heating. If it's too thin, simmer uncovered for 5-10 minutes to reduce the liquid. The velouté should coat the back of a spoon but still be pourable. Gruyère cheese naturally thickens the soup as it melts, so don't worry if it seems too thick when you add it—it'll smooth out as it warms.

4

Can I make this soup ahead of time?

The soup actually tastes better the next day. Store the finished soup (without the bread topping) in an airtight container in the fridge for 3-4 days or freeze for up to 2 months. Reheat gently on the stove, stirring occasionally. Toast the baguette fresh before serving to maintain crispiness. The flavors deepen as the onions and cheese meld together over time.

5

What's the best way to keep the bread topping crispy?

Toast the baguette slices separately in the oven before adding them to the soup. Brush with olive oil and toast at 375°F for 8-10 minutes until golden. Place them on top just before broiling the soup. For extra crispiness, store any leftover bread topping in a paper bag at room temperature—it stays crunchy for hours! The key is toasting them separately and adding them last.

★★★★★4.5(7 reviews)
Categories Soups & Stews