Caramelize the onions: Heat olive oil in a large pot or Dutch oven over medium heat. Add sliced onions and cook, stirring occasionally, for about 45-60 minutes, or until deeply caramelized and golden brown. This process takes time, so be patient.
Deglaze the pot: Add sherry or white wine to the pot and scrape up any browned bits from the bottom. Cook for a few minutes until the alcohol evaporates.
Add broth and simmer: Pour in beef broth, balsamic vinegar, Worcestershire sauce, and soy sauce. Bring to a boil, then reduce heat and simmer for at least 45 minutes to allow the flavors to meld.
Season: Season with black pepper and salt to taste. Remember that this soup needs a generous amount of salt, so add it gradually and taste as you go.
Prepare croutons: Slice baguette thinly, brush with olive oil, and sprinkle with salt, pepper, dried basil, oregano, garlic powder, and onion powder. Toast in the broiler until crisp. Sprinkle with shredded parmesan cheese and toast on the other side.
Assemble and broil (or torch): Ladle soup into oven-safe bowls. Top with toasted croutons and shredded Gruyere or Emmental cheese. Broil until cheese is melted and bubbly, or use a propane torch to melt and toast the cheese.