French Onion Meatballs With Gruyère and Onion Gravy
Tender beef and pork meatballs mixed with sweet, golden onions, baked until browned, then coated in a savory onion gravy and broiled under melted Gruyère cheese. A hearty, comforting dinner that tastes like French onion soup.
Ingredients
For the Onions
For the Meatballs
For the Gravy and Topping
Instructions
Cook the Onions
-
Use a large ovenproof braiser (a wide, heavy pan with a lid and low sides) or a deep 12-inch skillet with an oven-safe handle. Melt 4 tablespoons butter with the olive oil over medium-low heat, then add the onions, 1/2 teaspoon salt, and 1/4 teaspoon pepper. The pan will look very full at first, which is normal because onions shrink a lot as they cook. Cover and cook for about 10 minutes, stirring once, until the onions are soft and see-through. Uncover, raise the heat to medium, and cook for about 10 minutes more, stirring often, until they are very soft and deep golden.
Add the Wine, Thyme, and Garlic
-
Pour in the wine and add the thyme and garlic. Cook for about 5 minutes, stirring now and then, until the liquid has cooked away and the onions look glossy and jammy. Scoop half of the onions onto a cutting board and let them cool for about 10 minutes, then chop them finely. Leave the rest of the onions in the pan and turn off the heat.
Mix the Meatball Mixture
-
In a large bowl, stir together the panko, milk, parsley, Dijon, egg, chopped onions, 3/4 teaspoon salt, and 1/2 teaspoon pepper. It will look like a thick, wet paste, which is exactly right. Add the ground beef, ground pork, and 1 cup Gruyère. Mix gently with your hands for about 1 minute, just until no streaks remain. The mixture will feel soft and slightly sticky, and overmixing can make the meatballs tough, so stop as soon as everything is combined.
Shape the Meatballs
-
Line a large baking sheet with parchment paper. Wet your hands lightly with water to keep the mixture from sticking, then roll about 1 1/2 tablespoons of the mixture into a smooth ball. Repeat to make about 36 meatballs and space them out on the lined baking sheet. Don’t worry if they are not perfectly round, as they will firm up and neaten as they bake.
Chill the Meatballs
-
Place the baking sheet in the refrigerator for 15 minutes. Chilling firms up the fat in the meat so the meatballs hold their shape in the oven and stay tender. While they chill, heat the oven to 425°F with the rack in the center.
Bake the Meatballs
-
Bake the meatballs for about 15 minutes, until they are golden brown on the outside and the center reaches 160°F on an instant-read thermometer, which is the safe temperature for ground beef and pork. You may see some fat on the parchment, and this is normal. The kitchen will smell wonderfully savory by the time they are done.
Make the Gravy
-
About 5 minutes before the meatballs finish baking, return the pan with the onions to medium heat and melt 2 tablespoons butter in it. Sprinkle in the flour and stir for 1 to 2 minutes, until it no longer smells like raw flour. This butter and flour mixture is called a roux, and it thickens the gravy. Slowly pour in the broth while whisking constantly, then add the Worcestershire sauce. Simmer for 4 to 5 minutes, until the gravy is thick enough to coat the back of a spoon, then stir in the vinegar. If a few lumps appear, keep whisking and they will smooth out.
Broil With the Cheese
-
Add the baked meatballs to the pan and gently turn them until they are coated in gravy. Sprinkle the remaining 1 cup Gruyère over the top. Switch the oven to broil (the oven’s strong top heat) and place the rack about 6 inches from the heat. Broil for 2 to 3 minutes, watching closely, until the cheese is melted and golden and the gravy is bubbling. Sprinkle with parsley and serve warm with sliced baguette for soaking up the gravy.
Note
Choose 80/20 ground beef for the juiciest meatballs, as leaner beef can turn dry. Shredding Gruyère from a block melts more smoothly than pre-shredded cheese.
To save time, cook the onions and shape the meatballs up to 1 day ahead. Keep them covered in the refrigerator, then bake, make the gravy, and broil just before serving.
Store leftovers in an airtight container in the refrigerator for up to 4 days. Reheat in a covered baking dish with a splash of beef broth at 350°F for 15 to 20 minutes, until hot all the way through (165°F). The cooked meatballs and gravy can be frozen without the cheese topping for up to 3 months. Thaw overnight in the refrigerator, then add fresh cheese and broil again.
If the gravy is too thin, simmer it for 2 to 3 more minutes. If it is too thick, whisk in a splash of broth. If the cheese browns too quickly under the broiler, lower the rack slightly. Calories are an estimate and will vary with the brands used.