Melt the butter with 2 tablespoons of olive oil in a large Dutch oven over medium-high heat. Add the onions and cabbage, cover, and cook for 10–15 minutes until softened.
Stir in the brown sugar, salt, and pepper. Reduce the heat to medium-low and cook for another 15–20 minutes, stirring occasionally, until the onions and cabbage are deeply caramelized.
Add the garlic, tomato paste, and flour. Cook for 2–3 minutes while stirring.
Pour in the red wine and scrape the bottom of the pot to release all the browned bits.
Stir in the Worcestershire sauce and beef stock, then bring the soup to a gentle boil.
Add the thyme, parsley, and bay leaf. Reduce the heat and simmer uncovered for 25–30 minutes.
While the soup simmers, toast the baguette slices with the remaining olive oil under the broiler until golden on both sides.
Remove the herb bundle from the soup and ladle the soup into oven-safe bowls.
Place one toasted baguette slice on top of each serving, cover generously with Gruyère (or Swiss) cheese, and finish with Parmesan.
Broil for 2–3 minutes until the cheese is melted, bubbly, and lightly golden.
Garnish with fresh thyme or parsley if desired, then serve immediately.