Heat the butter and olive oil in a large saucepan.
Add the sliced onions and cook until soft, then continue cooking until deeply caramelised.
Stir in the garlic and caster sugar.
Add the flour and cook for 1 minute.
Pour in the white wine and let it reduce slightly.
Add the beef stock, Worcestershire sauce, bay leaves, and rosemary.
Simmer gently for about 20 minutes and season with salt and black pepper.
Toast the baguette slices.
Spread Dijon mustard over the toasted bread and top with Gruyère and Parmesan.
Ladle the soup into ovenproof bowls, place the bread on top, and grill until the cheese is melted and golden.
Serve immediately while hot.