Heat the olive oil in a large pot over medium-high heat. Add the onions and cook for 8-10 minutes, stirring occasionally, until they are lightly browned and caramelized.
Add the garlic, thyme, nutmeg, and bay leaf and cook for 1 minute more.
Add the brandy and cook for 2 minutes more, stirring to loosen any browned bits from the bottom of the pot.
Add the beef stock, balsamic vinegar, and pepper. Bring to a boil, then reduce the heat to low and simmer for 30 minutes.
Season with salt, to taste.
Preheat the oven to 350 degrees F. Place the sourdough bread pieces on a baking sheet and bake for 15 minutes, or until lightly toasted.
Ladle the soup into the toasted bread bowls and top with grated Gruyere cheese.
Interesting Facts
Caramelizing the onions is key to creating a sweet, savory flavor for this soup.
For a richer flavor, use an additional 1/4 cup of brandy.
For a gluten-free version, use gluten-free bread instead of sourdough bread.