Heat the butter in a large, high-sided skillet over medium heat. Add sliced onions and season with salt and black pepper, to taste. Stir to combine. Cook, stirring occasionally, until caramelized, approximately 45 minutes to one hour.
Deglaze the bottom of the pan by adding the red wine and balsamic vinegar and gently scraping the browned bits off the bottom with a spatula.
Add the broth, bay leaves, Italian seasoning, garlic powder, sprigs of fresh thyme, and Worcestershire sauce, if using. Season with additional salt and black pepper, if desired, and stir to combine.
Increase heat to high and bring to a rapid boil, then immediately reduce heat to medium-low. Loosely cover the skillet with a lid and simmer, stirring occasionally, for two hours.
Remove from the heat and discard the thyme stems and bay leaves. Divide the soup between four large oven-safe ramekins or bowls. Top with slices of the Gruyère cheese, followed by the freshly grated Parmesan cheese. *
Turn broiler/grill to high.
Arrange ramekins on a large, rimmed baking sheet and place them on the top oven rack. Broil/grill for approximately 8-10 minutes until the cheese is melted and golden brown. Remove from oven and serve immediately garnished with a few fresh thyme leaves. Enjoy!