Classic Rich and Silky Potato Gratin (Scalloped Potatoes) Recipe

After rounds and rounds of testing, we've finally landed on the perfect classic potato gratin (scalloped potatoes), one that's creamy, silky, and loaded with flavor.

serving up a slice of scalloped potatoes gratin

Serious Eats/Vicky Wasik

Why This Recipe Works

  • Steeping the milk and cream with aromatics adds extra flavor.
  • Slicing the potatoes directly into hot milk releases starches into the milk mixture, resulting in a creamier gratin.
  • Allowing the gratin to rest before serving gives the potatoes time to absorb the rich dairy.

I have a problem with potato gratins. It's the same problem I have with muffins—I only want the top and usually neglect what's below deck. The interior of a poorly made potato gratin is bland, dry, and crumbly, but even the worst gratins have a savory and speckled crust. I'm not alone with my prejudice. Jeffrey Steingarten, the author of The Man Who Ate Everything, developed an indulgent single-layer potato gratin recipe that yields a crusty-top-only dish. I've made his recipe several times and can admit to curling up on the couch with it, picking at every golden bit with my fingers. Although I delight in this shameful activity, some nights I'm struck with guilt, worrying about that under part of a gratin that's so often ignored. This is what motivated me to perfect the classic potato gratin—one with a flavorful and creamy interior not to be dismissed, and a bottom that rivals the top's golden hue.

Like many classic dishes, recipes for potato gratin are all over the map. The basic idea is always the same—sliced potatoes are layered, smothered in cream, milk, or a sauce, and baked together until tender and golden brown. Some recipes insist on using cream only while others stand by milk. There are vehement anti-cheese believers with equally zealous cheese proponents across the aisle. Then there are the extremists like Kenji, who turn the whole dish on its head with his sideways-loaded hasselback potato gratin.

I just want the classic. For me, this means a gratin that's crisp all the way around—with cheese and potato that has browned on the bottom, sides, and top. The potatoes are tender and well seasoned, with layers of creamy curds in between them. Most importantly, I want to want to eat it all, and not just think about picking off the top layer when no one is looking.

To figure out what I was up against, I tested all the variations: different proportions of milk and cream, liquid-to-potato ratios, baking times and temperatures, and even went old-school with a few batches with whole eggs and yolks.

Milk vs. Cream

As a gratin bakes, two actions produce the creamy filling. Firstly, the potatoes release some of their starches, which thicken the surrounding liquid. Secondly, the dairy reduces—some of its liquid is absorbed by the potato while the rest slowly evaporates. As the liquid in the dairy reduces, protein and fat are left behind, forming creamy curds throughout.

In the testing, I found the combination of the milk and cream produced the best result and added just enough fat to produce extra silky curds without becoming too rich. I also tested a batch with evaporated milk, fully expecting an even better result due to its inherently high concentration of protein, only to find no difference in the final dish. Since I prefer to use fresh ingredients, I decided to stick with regular milk instead.

Some old cookbooks recommend the addition of a whole egg or yolk into the dairy mixture. Even the smallest amount of egg resulted in the gratin setting up with the brittle texture of a flan.

It sliced well, but I preferred the soft and supple texture of the gratin without egg over picture-perfect serving portions. If the latter is what you're after, the addition of half a yolk to the milk and cream mixture is enough to achieve a clean slice.

Flavor Enhancers

The next challenge was to introduce layers of flavor to a dish that could easily fall flat. To do this, I steeped the milk and cream with garlic and shallots for their pungency, black peppercorns for a mild heat, and thyme for its fresh, piney aroma. After an hour, the milk mixture was thoroughly perfumed and the aromatics were ready to be strained out. This infuses the gratin with layers of complex aromatics, without interrupting that silky-smooth texture.

I then seasoned the milk and cream mixture with a touch of freshly ground nutmeg and a generous dose of salt. You have to over-salt the milk mixture at this point so that it can properly season the potatoes. I also found that the gratin was more consistently seasoned when the salt was dissolved in the milk mixture rather than sprinkled in between the slices of potato.

Consider the Potato

Two whole russet potatoes with skin on.

Serious Eats/Vicky Wasik

Because I want a gratin filled with creamy and tender potatoes which are also crisp on the sides and top, I turn to high-starch russets. These potatoes are low in moisture and therefore best suited to absorb the flavorful milk and cream mixture, quickly becoming plump and tender. Their starch content is also important because as they cook they release plenty of starch molecules, which will help thicken up the gratin's liquid component.

On the downside, high-starch potatoes also oxidize faster, quickly becoming brown and discolored when they are cut or sliced. To remedy this, many recipes say to hold the sliced potatoes in water to halt the oxidation until you are ready to use them. The problem is that this washes off some starches and results in the loss of vital thickening power. Instead, I slice them directly into the milk they'll be baked in, preventing the potato slices from oxidizing while keeping all their starches right where you want them—in the final dish.

The Cheese Question

Some recipes insist that there's no place for cheese in a potato gratin—the cheesy flavor and creamy texture should entirely come from the milk proteins concentrating and browning. However, I like the brightness cheese brings to the dish. Too much cheese will break and become greasy, but a small amount of Parmesan adds a salty tang, while some Gruyere puts nuttiness into play. More importantly, the cheese forms a crunchy-chewy crust along the bottom and sides of the dish, wrapping the gratin in a savory frico—a crispy cheese cracker.

Putting It All Together

After rounds of testing, this perfect classic potato gratin comes together in just a few easy steps.

Collage of herbs steeping in cream, cream being strained out, potatoes being sliced on mandoline, and potatoes slices submerged in bowl of cream.

Serious Eats/Vicky Wasik

Step 1: Make a Flavorful, Protein-Rich Base

The dairy base needs to have a higher proportion of milk to cream. As it reduces, there will be more concentrated proteins than with cream alone. These proteins form curds that brown, adding a custardy texture and rich flavors. Also, starting with more total dairy in your gratin will yield lots of rich, brown curds. It will look like far too much milk, but have faith that it will eventually all cook down.

I combine the dairy with aromatics and bring to a boil, before covering to steep. Taking your time with this step is the best way to ensure a flavorful and seasoned final dish. After steeping, I bring the milk mixture up to a boil before straining into a bowl. Reheating the milk mixture cuts back on your total bake time and gets the potato slices soaking up all that flavor immediately. The recipe still works without this step; however, it may take up to half an hour longer to bake in the oven.

Step 2: Maximize Starchiness

I start with high-starch russets and hold on to all that starch by slicing peeled potatoes directly into the hot infused milk. The thin, rigid slices immediately wilt, releasing their starches to be distributed through the milk-cream mixture. I also give them a good stir so all the slices are fully coated in milk and they begin to absorb the seasoning and aromatics.

Step 3: Get a Little Cheesy

I like a little cheese for extra flavor and to bump up the browning. After the potato slices are shingled in a buttered casserole dish, I sprinkle a touch of grated Parmesan and Gruyere before topping with the next layer. I'll repeat this until no more potatoes remain, leaving the top layer cheese-free for the initial low-temperature bake. The reserved starchy milk gets poured over the layers.

Step 4: Baking Covered, Then Uncovered

I first bake the gratin covered at 350°F (177°C) for about one hour. Then, I top the gratin with cheese and continue to bake uncovered for another 20 minutes until the sauce thickens. The sides and bottom will be richly golden and that extra dusting of cheese will form a thick, chewy crust.

Creamy potato gratin plated with a fork beside it.

Serious Eats/Vicky Wasik

By starting with a flavorful base and focusing on a few key details, no more gratins need to suffer the fate of having an unappealing lower half. If only someone could convince me to eat a muffin stump, my conscience could finally rest at ease.

November 2017

This recipe was cross-tested in 2022 and lightly updated to guarantee best results. We increased the oven temperature from 300ºF (149ºC) to 350ºF (177ºC), sliced the potatoes thinner, and adjusted the milk and cream ratio.

Recipe Details

Classic Rich and Silky Potato Gratin (Scalloped Potatoes) Recipe

Prep 10 mins
Cook 90 mins
Active 30 mins
Resting Time 90 mins
Total 3 hrs 10 mins
Serves 8 servings

After rounds and rounds of testing, we've finally landed on the perfect classic potato gratin (scalloped potatoes), one that's creamy, silky, and loaded with flavor.


  • 2 cups (480ml) heavy cream

  • 1 cup (240ml) whole milk

  • 2 medium cloves garlic (8g), smashed

  • 2 small shallots (4 ounces; 110g total), quartered

  • 1/8 teaspoon freshly grated nutmeg

  • 6 sprigs fresh thyme

  • 2 teaspoons (6g) whole black peppercorns

  • 1 1/2 teaspoons (7g) Diamond Crystal kosher salt; for table salt, use half as much by volume

  • 3 medium russet potatoes (1 3/4 pounds; 800g)

  • 2 ounces grated Parmigiano-Reggiano cheese (60g; about 1/2 cup)

  • 4 ounces grated Gruyère cheese (120g; about 1 1/2 cups)

  • 1 tablespoon (15g) unsalted butter, softened


  1. In a small saucepan, combine cream, milk, garlic, shallots, nutmeg, thyme, peppercorns, and salt. Bring to a boil, then remove from heat, cover, and let steep for 1 hour.

    Aromatics steeping in hot milk.

    Serious Eats/Vicky Wasik

  2. Return milk mixture to boil, then strain into a large heatproof bowl, pressing gently on the solids.

  3. Using a mandoline, slice the peeled potatoes crosswise 1/16-inch (1.5mm) thick, directly into the hot milk mixture. Stir the potatoes to fully coat.

  4. Preheat oven to 350°F (177°C). In a small bowl, combine the Gruyère and Parmigiano-Reggiano cheeses.

  5. Grease a 2-quart baking dish with the butter. Lay the sliced potatoes in one even layer, then sprinkle with about 1/3 cup cheese mixture. Repeat layering potatoes and cheese until all the potatoes have been used and half the cheese mixture remains (you should have about 4 layers); leave the top layer without cheese. Pour any remaining milk mixture over the layered potatoes.

    Collage of stage of assembling scalloped potatoes in gratin dish.

    Serious Eats/Vicky Wasik

  6. Cover with aluminum foil and bake for 1 hour. Remove baking dish from oven and remove foil. Evenly sprinkle remaining cheese on top and continue to bake, uncovered, until the potatoes have become tender, the sauce has thickened, and the surface is lightly golden brown, 15 to 20 minutes. Allow the gratin to rest 30 minutes before serving.

    Cheese being sprinkled on top of lightly golden baked potatoes gratin.

    Serious Eats/Vicky Wasik

Special Equipment

Mandoline slicer, mesh strainer, 2-quart baking dish

Nutrition Facts (per serving)
442 Calories
31g Fat
29g Carbs
12g Protein
Show Full Nutrition Label Hide Full Nutrition Label
Nutrition Facts
Servings: 8
Amount per serving
Calories 442
% Daily Value*
Total Fat 31g 40%
Saturated Fat 20g 98%
Cholesterol 98mg 33%
Sodium 627mg 27%
Total Carbohydrate 29g 10%
Dietary Fiber 3g 11%
Total Sugars 6g
Protein 12g
Vitamin C 10mg 51%
Calcium 320mg 25%
Iron 1mg 8%
Potassium 735mg 16%
*The % Daily Value (DV) tells you how much a nutrient in a food serving contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
(Nutrition information is calculated using an ingredient database and should be considered an estimate.)