Cook the rotini pasta according to package instructions until al dente. Drain and set aside.
In a large skillet, heat olive oil and butter over medium heat.
Add sliced onions and cook until they are soft and caramelized, about 20 minutes.
Stir in minced garlic and thyme, cooking for an additional 2 minutes.
Pour in the beef and vegetable broths; bring to a simmer.
Mix in the cooked pasta, ensuring it is well-coated with the onion mixture.
Remove from heat and stir in half of the Gruyère and Parmesan cheeses.
Transfer the pasta mixture to a baking dish.
Top with the remaining cheeses and season with salt and pepper.
Broil in the oven until the cheese is bubbly and golden brown, about 5 minutes.