Cook ½ lb of pasta in salted water until al dente and reserve 1 cup of pasta water
Add 3 tbsp of butter and a dash of olive oil to a pan on medium heat, slice 2 lbs of onions and add to the pan
Season onions with salt and pepper, cook until caramelized (45 mins - 1.5 hours), stirring constantly and adding water as needed to prevent burning
Remove caramelized onions from the pan and add 3 tbsp of butter and a dash of olive oil, then add 3 cloves of minced garlic
Cook garlic for a few minutes until fragrant, then add 3 tbsp of flour and whisk well, let roux cook for a few minutes
Slowly add 1 cup of milk while whisking to remove lumps, then add 1 cup of heavy cream and ½ cup of beef broth and mix well
Season with salt, pepper, thyme, garlic powder, onion powder and paprika, then mix in 1 cup of Gruyère, 1 cup of cheddar and ½ cup of Swiss cheese and whisk until incorporated
Add the caramelized onions back to the pan, then add cooked pasta and a dash of pasta water and mix well
Top with more cheese and broil for 5-10 minutes until cheese is melted and slightly browned, then top with additional cheese and serve
