Preheat oven to 425 degrees and line a rimmed baking sheet with aluminum foil. Spray foil with cooking spray.: You will feel the kitchen shift from prep to action as the oven warms, and that hot air is what gives the meatballs a quick, even bake. The foil makes cleanup trivial and reflects heat slightly, helping the underside of the meatballs firm without overbrowning. A common mistake is skipping the preheat, which lengthens bake time and can dry the meatballs. Make sure the oven reaches temperature before you put the tray in, and use an oven thermometer if yours runs cool or hot.
In a large cast iron skillet, heat butter and olive oil over medium-low heat. When butter is melted, add the onions. Cook stirring occasionally until light brown, about 25 minutes.: At first the pan will hiss gently, then the onions will soften and start to release sugars, filling your kitchen with a sweet, toasty aroma. As they slowly brown, you will notice strands separating and turning translucent before acquiring deep golden edges. Stirring occasionally encourages even caramelization and prevents scorching, which can turn the pleasant nutty notes bitter. If you rush with high heat, the outsides will darken too fast while the centers remain raw, so patience is the key here.
Meanwhile combine all meatball ingredients, mixing together gently. Shape into 14 to 16 meatballs. Place meatballs on prepared baking sheet and bake for 15 to 18 minutes.: The texture of your mixture should feel cohesive but not compacted, and when you form the balls they should hold shape without being dense. As they bake, you will hear a faint sizzle and see the exterior set and develop a light crust, signaling juices sealing inside. Overworking the mix makes meatballs tough, so use a light touch when combining and shaping. If some meatballs are uneven in size, adjust baking time slightly so they all finish evenly.
Once onions are caramelized, sprinkle flour over them. Stir and cook for 2 minutes.: The aroma will shift as the small amount of flour toasts, creating a foundation for a glossy sauce. Cook it briefly so the raw flour taste disappears and it blends seamlessly with the browned onions . Stir continuously to coat the onions evenly; if you skip this step, the sauce may taste floury or have lumps once you add the broth. The pan should look slightly dusted and fragrant after a couple of minutes.
Gradually whisk in beef broth. Bring to a boil. Add thyme and salt and pepper to taste. Once thickened a little, reduce heat to low to keep warm. When meatballs are done in the oven, add them to the cast iron skillet.: Slowly adding the beef broth while whisking releases the flavorful browned bits from the pan, and you will see the sauce become glossy and cohesive. As it reaches a boil, steam and savory perfume will rise, and the thyme will lift the flavors with a green, aromatic note. Thickening is subtle here, you want a saucy consistency that clings to the meatballs . Reduce to low to maintain warmth without breaking down the sauce, and when you nestle the baked meatballs into the skillet they will soak up those flavors while the sauce clings to their crusts. A mistake is boiling too long, which concentrates too much and may evaporate precious moisture.
Place baguette slices on the baking sheet you cooked the meatballs on and stick under the broiler until they get a little crispy.: The thin baguette slices will crisp quickly, producing tiny toasty flavor notes and a satisfying crunch. Keep them close to the broiler and watch carefully, because they can go from golden to burnt in moments. Use tongs to move them when edges brown, and remove before they darken too much. If you let them soften under residual heat, they will not provide the textural contrast you want against the tender meatballs .
Stick baguette slices between the meatballs and sprinkle Gruyere cheese over everything. Place skillet under broiler until cheese is melted.: When the hot skillet meets the broiler, the shredded Gruyere cheese will bubble and turn lusciously golden, yielding that irresistible stringy pull. The sensory payoff is immediate, the sizzling notes and nutty scent of the melted cheese signaling the dish is almost ready. Keep the skillet a few inches from the broiler and rotate if necessary for even browning. A common error is leaving it too long; watch for the cheese to just bubble and brown lightly, then remove to avoid bitterness from overbrowning.