French Onion Stuffed Shells

published Sep 19, 2022
French Onion Stuffed Shells Recipe

Beautiful stuffed shells with a caramelized onion ricotta filling, a Gruyère cheese sauce, and a cheesy breadcrumb topping.


Prep1 hour

Cook1 hour 30 minutes

Jump to Recipe
We independently select these products—if you buy from one of our links, we may earn a commission. All prices were accurate at the time of publishing.
French onion stuffed shells I n a pan
Credit: Photo: Chris Simpson; Food Styling: Pearl Jones; Prop Styling: Paige Hicks

This recipe is part of Kitchn 100 — the hundred recipes you need right now. Check out all of the amazing dishes, from Kitchn and beyond, here.

Stuffed shells will forever bring me joy — partly because I grew up eating them, but also because they allow full flexibility to whichever flavors I’m currently craving. With a caramelized onion ricotta filling, Gruyère cheese sauce, and a cheesy breadcrumb topping, these shells are inspired by French onion soup. Each component tastes complex on its own, but everything comes together to make the perfect bite.  

I know that stuffing each individual shell might seem like a commitment, but stuffed shells lend themselves well to meal prep. I love making this dish ahead of time whenever I know that it’s going to be a busy week and I won’t have much time to cook. Assembled and unbaked, it stores well in the fridge for up to five days or in the freezer for up to three months.

French Onion Stuffed Shells Recipe

Beautiful stuffed shells with a caramelized onion ricotta filling, a Gruyère cheese sauce, and a cheesy breadcrumb topping.

Prep time 1 hour

Cook time 1 hour 30 minutes

Serves 6

Nutritional Info


  • About 2 pounds

    yellow onions, preferably large

  • 5 tablespoons

    olive oil, divided

  • 30

    dried jumbo pasta shells (about 8 ounces)

  • 6 ounces

    Parmesan cheese (or 2 cups store-bought grated), divided

  • 8 ounces

    Gruyère cheese

  • 1 medium bunch


  • 4 tablespoons (1/2 stick)

    unsalted butter

  • 1/4 cup

    all-purpose flour

  • 1 1/2 cups

    whole milk

  • 1 1/2 cups

    beef broth

  • 2 teaspoons

    Worcestershire sauce

  • Salt

  • 3 large cloves


  • 6 sprigs

    fresh thyme, divided

  • 1 (15 to 16-ounce) container

    ricotta cheese (about 2 cups)

  • 1 1/2 teaspoons

    freshly ground black pepper, divided

  • 1/2 cup

    bread crumbs


  1. Thinly slice about 2 pounds yellow onions (about 6 cups). Heat 2 tablespoons of the olive oil in a large skillet over medium-low heat until shimmering. Add the onions and cook, stirring every 8 to 10 minutes, until they are caramelized and jammy, 45 to 50 minutes total. Meanwhile, cook the pasta, make the sauce, and prepare the remaining ingredients.

  2. Arrange a rack in the middle of the oven and heat the oven to 375°F. Coat a rimmed baking sheet with 1 tablespoon of the olive oil. Bring a large pot of heavily salted water to a boil. Add 30 dried jumbo pasta shells and cook until al dente, 8 to 9 minutes. Drain the pasta well. Transfer to the baking sheet and arrange into a single layer.

  3. Grate 6 ounces Parmesan cheese on the smallest holes of the box grater (about 2 cups), or measure out 2 cups store-bought grated; transfer half to a large bowl and the remaining half to a medium bowl. Grate 8 ounces Gruyère cheese on the large holes of a box grater (about 2 cups).

  4. Trim and thinly slice 1 medium bunch scallions (about 1 cup). Transfer half to the medium bowl and the remaining half to the large bowl.

  5. Melt 4 tablespoons (1/2 stick) unsalted butter in a medium saucepan over medium heat. Add 1/4 cup all-purpose flour and stir constantly until light brown in color, about 2 minutes. Add 1 1/2 cups whole milk, 1 1/2 cups beef broth, and 2 teaspoons Worcestershire sauce, and whisk to combine. Bring to a simmer, then simmer until thick enough to coat the back of a spoon, about 5 minutes.

  6. Add the Gruyère and stir until melted. Remove the saucepan from the heat. Taste and season with salt as needed.

  7. Thinly slice 3 large garlic cloves (about 1 tablespoon). Pick the leaves from 6 fresh thyme sprigs until you have 1 tablespoon; add half to the medium bowl. When the onions are almost ready, add the garlic and remaining thyme and cook for 5 minutes more.

  8. Add the caramelized onions, 1 (15 to 16-ounce) container ricotta cheese, and 3/4 teaspoon of the black pepper to the large bowl and stir to combine. Taste and season with salt as needed.

  9. Add the remaining 2 tablespoons olive oil, remaining 3/4 teaspoon black pepper, and 1/2 cup panko breadcrumbs to the medium bowl and stir to combine.

  10. Assemble the stuffed shells: Pour half of the cheese sauce (about 1 1/2 cups) into a 9x13-inch baking dish and spread into an even layer. Stuff the onion mixture into the shells with a spoon (about a heaping tablespoon in each) and place them filling-side up in the dish. (Alternatively, transfer the filling into a zip top bag, cut off a bottom corner, and pipe the filling into the shells.)

  11. Spoon the remaining cheese sauce evenly over the shells. Sprinkle evenly with breadcrumb mixture.

  12. Bake until the breadcrumbs are golden brown and the sauce is bubbling, 30 to 35 minutes. Let cool for 10 minutes before serving.

Recipe Notes

Dried thyme: 3/4 teaspoon dried thyme can be substituted for the fresh. Use half in the caramelized onions and mix the remaining half into the breadcrumb mixture.

Make ahead: The stuffed shells can be assembled in the baking dish, cooled, covered, and refrigerated for up to 5 days or frozen for up to 3 months. If frozen, thaw overnight in the refrigerator. Uncover and bake as directed, adding more baking time as needed.

Storage: Leftovers can be refrigerated in an airtight container for up to 4 days.