Heat butter + olive oil in a large pot. Add onions. Cook on medium-low for 30–40 minutes, stirring often, until deeply caramelized.
Add garlic. Stir for 2 minutes. Add sugar 10 minutes in to help browning.
Deglaze with wine, scraping the bottom. Add stock, bay, thyme, salt, and pepper.
Simmer uncovered 30 minutes. Taste and adjust seasoning.
Toast baguette slices. Top with Gruyère. Broil until golden.
Serve soup in bowls. Float a cheesy crouton on top. Garnish with parsley.
