Heat olive oil and butter in a large, deep oven-safe skillet over medium heat.
Add the onions and ½ teaspoon salt. Cook for 10–15 minutes, stirring occasionally, until softened and golden.
Push the onions toward the outside of the skillet and add the ground beef. Cook, breaking it into crumbles, until browned. Drain excess grease if necessary, then combine the beef and onions.
Stir in garlic, thyme, Worcestershire sauce and balsamic vinegar. Cook for about 1 minute.
Add the dry orzo and stir. Toast for about 1 minute.
Pour in the beef broth or bone broth. Bring to a simmer, then reduce heat to medium-low.
Cook uncovered for 10–12 minutes, stirring frequently, until the orzo is tender. Add additional broth as needed if the liquid is absorbed before the orzo finishes cooking.
Reduce heat to low and stir in heavy cream and Parmesan.
Taste and season with remaining salt and freshly cracked black pepper as needed.
Sprinkle Gruyère evenly over the top. Cover for 2–3 minutes to melt, or place under the broiler for 1–2 minutes until bubbly and golden.
Finish with fresh thyme and serve immediately.