Keto Cauliflower Gratin
Published January 10, 2021 • Updated July 20, 2026
This post may contain affiliate links. See my disclosure policy.
Creamy, cheesy, and loaded with two kinds of cheese and bacon, this keto cauliflower gratin is the side dish I get asked to bring to every holiday dinner. The main ingredient is cauliflower, but nobody at the table will care.
I started making this back in 2019 when I needed a holiday side dish that could replace potato gratin without anyone noticing. What I ended up with was a low carb side dish so ridiculously cheesy and rich that my family now requests it for every gathering, every potluck, and most weeknight dinners too.
The base is simple. Steam the cauliflower, squeeze out every drop of moisture, then smother it in a sauce made with butter, heavy cream, sharp cheddar, and gruyere. I add bacon and fresh thyme because those two ingredients take this from a basic veggie side to something people actually fight over. The gruyere melts smooth and nutty while the sharp cheddar brings that deep, punchy flavor. Together they create this velvety sauce that clings to every floret.
If you love cauliflower dishes, you already know it can do almost anything. I use it in my twice baked loaded mashed cauliflower, my cauliflower mac and cheese, and even cauliflower tots. But this cheesy gratin is my favorite way to cook it. There are only 3 net carbs per 100 grams of cauliflower, so you get all that creamy, cheesy goodness without the carb count of traditional potato gratin.
The biggest thing I learned after making this dozens of times: moisture is the enemy. If you skip the step where you press the steamed florets dry, you end up with a soupy mess instead of a thick, creamy dish. I layer the cauliflower between paper towels and press firmly until no more water comes out. Some readers roast the florets at 400 degrees instead, which works great because the oven is already on and you avoid adding moisture in the first place.
I also love that this is a perfect make-ahead recipe. I assemble the whole thing 1-2 days before and just pop it in the oven when I am ready. The flavors actually meld together while it sits in the fridge, so if anything it tastes better the next day. One of my readers figured out that reheating at 50% microwave power for the first minute, then full power for 45 seconds, keeps the gruyere sauce completely smooth and the bacon actually crisps back up. I tested her method and she is right.
If you are building a keto holiday spread, pair this with my sweet potato casserole, cornbread stuffing, and green bean casserole. I served all three last Thanksgiving and nobody missed the carbs. Not even the non-keto people at the table.
How I Make This Cheesy Cauliflower Bake
The almond flour roux is the step that confuses people. It does not thicken the way wheat flour does, so if you are standing at the stove waiting for a thick bechamel, you will overcook it. I stir the almond flour into the melted butter for 30 seconds, whisk in the cream, and watch for the sauce to just barely coat the back of a spoon. That is your signal to pull it off heat and stir in the cheese. Do not worry if it looks thin. It sets up in the oven once the cheese melts and the gratin bakes. I wasted batches chasing stovetop thickness before I figured this out.
Explore hundreds of keto recipe videos with step-by-step instructions, tips, and tricks to make keto easy.
Ingredients
1 pound cauliflower florets
3 tablespoons butter
3 tablespoons almond flour
1 cup heavy cream
1 teaspoon salt
1/4 teaspoon onion powder
1/4 teaspoon garlic powder
1/4 teaspoon pepper
1/2 cup shredded sharp cheddar cheese
1/2 cup shredded gruyere cheese
6 slices of bacon, crumbled
1 teaspoon fresh thyme
Step by Step Instructions
Step by Step Instructions
Preheat oven
Preheat oven to 375 degrees.
Steam cauliflower
Steam cauliflower florets in a large pot with salted water until fork tender.
Squeeze out moisture
Remove florets and place in between two layers of paper towels or clean towels. Gently press the excess moisture out of the florets. Set aside.
Melt butter
In a saucepan, melt butter over medium heat. Stir in almond flour and cook for 30 seconds.
Make the sauce
Slowly whisk in heavy cream. Add salt, onion powder, garlic powder and pepper. Bring to boil, then reduce to a simmer until thick (about 5-7 minutes).
Of course, add cheese
Remove from heat and stir in cheeses, bacon and thyme.
Bake it
Add half the cheese mixture to the bottom of a cast iron skillet or casserole dish. Add florets on top of the first cheese layer. Spoon remaining cheese mixture over the top of florets. Sprinkle with additional cheese and thyme. Bake at 375 for 25 minutes.
Nutrition disclaimer
The nutrition information provided is an estimate and is for informational purposes only. I am a Doctor of Pharmacy (Pharm.D.); however, this content is not intended to be a substitute for professional medical advice, diagnosis, or treatment. Always consult your physician or other qualified health provider before making any lifestyle changes or beginning a new nutrition program.
Your Macros. Your Recipes. Calculated in 60 Seconds.
Get personalized keto macros and instantly see which recipes fit your targets. No more guessing what to eat.
Get My Macros + Recipes →Frequently Asked Questions
Can I make this ahead of time?
I do this all the time, especially for holidays. I assemble the entire dish 1-2 days before and store it covered in the fridge. When I am ready, I bake it straight from the fridge at 375 degrees, adding about 5 extra minutes to the bake time. The flavors actually develop more overnight, so I think it tastes even better made ahead.
Can I freeze this?
I have frozen this for up to 3 months with good results. I assemble it unbaked, wrap it tightly in foil, and freeze. When I am ready to cook it, I thaw it overnight in the fridge and bake as directed. The texture is slightly softer than fresh, but the cheese sauce holds up well.
What is the difference between cauliflower gratin and cauliflower au gratin?
They are the same dish. 'Au gratin' is just French for 'with gratings,' referring to the cheese crust on top. I use the shorter name, but if you search 'cauliflower au gratin' you are looking for the exact same thing. The real difference between recipes is the cheese blend and whether anyone bothers pressing the moisture out. I use sharp cheddar and gruyere together, which gives more depth than one-cheese versions.
Can I make this dairy-free or vegan?
I have tested a dairy-free version using full-fat coconut cream instead of heavy cream and nutritional yeast with a cashew cheese blend in place of the cheddar and gruyere. It is a different dish (you lose that nutty gruyere depth), but it works as a creamy, savory side. I would skip trying to find a perfect vegan cheese substitute and lean into the coconut cream with lots of garlic, thyme, and nutritional yeast. The flavor shifts, but it is still really good.
Can I use an Instant Pot to cook the cauliflower?
One of my readers made this with Instant Pot cauliflower and it turned out great. I have since tried it myself. Pressure cook the florets for 2 minutes on high, quick release, then press them really dry. The Instant Pot traps more moisture than stovetop steaming, so you need to be extra aggressive with the towels. I go through 4-5 rounds of pressing before the florets go into the gratin.
What size casserole dish do I need?
My recipe as written fits in a dish slightly smaller than 8x10, or a 10-inch cast iron skillet. If you are doubling it for Thanksgiving or a bigger group, use a 9x13 casserole dish. I have doubled this more times than I can count and the only thing I adjust is the bake time. I add about 5-7 extra minutes since the thicker layer needs more time for the center to bubble.
How do I keep the gratin from getting watery?
I learned this the hard way. The number one fix is pressing the steamed cauliflower dry between thick layers of towels. I go through 3-4 rounds until no moisture comes through. The other thing I do is simmer the cream sauce a full 5-7 minutes until it coats the back of a spoon. If the sauce is too thin going in, the dish will be soupy coming out. Roasting the florets at 400 degrees instead of steaming also helps since it removes moisture without adding any.
How do I reheat without the cheese sauce breaking?
I figured this out after a reader shared her method and I tested it myself. Start at 50% microwave power for the first minute, then switch to full power for 45 seconds. Going straight to full power breaks the gruyere sauce every time. For oven reheating, I cover with foil at 350 degrees for 10-15 minutes. The foil traps steam so the cheese melts back together instead of drying out on top. The bacon actually crisps back up either way, which I did not expect.




I stood over the butter and almond flour roux waiting for it to break or clump, and it just didn't. First gratin, first roux. Can you substitute coconut flour here, or does almond flour do something specific to how the sauce sets?
The almond flour sauce needs more stovetop time than the recipe suggests, learned that the hard way. Pulled it too early and the whole thing came out soupy once baked, still good enough to eat but not what it should be. Second time I let it simmer two full minutes past the first bubble and it set up perfectly. Four stars because the gratin itself is really solid, just don't rush that sauce.
Made this last weekend and it was a hit, but I'm second-guessing how well I dried the cauliflower. I squeezed it between two dish towels like the recipe says but couldn't really tell if I got enough moisture out, especially since the sauce with the heavy cream and two cheeses is already pretty liquidy before it goes in the oven. Tasted great, but there was a little pool of liquid at the bottom by the time we sat down. Did I not press hard enough, or did I steam them too long and they released extra water while baking? Mine went about 9 minutes because I wanted them soft all the way through. Now wondering if slightly underdone florets would hold up better. Basically: is the fix in the drying or the steaming?
I assumed it would taste like cauliflower. Doesn't.
Six slices of bacon and two kinds of cheese will do that. I stopped telling people what's in it.
The thing I gave up on going keto wasn't bread, it was my grandmother's scalloped potatoes. Heavy cream, whatever hard cheese she had, every Sunday. I figured that whole category was just closed to me. This gratin proved me wrong. I stood at the counter eating it before I even plated it, not a sophisticated review, but an honest one.
The gruyere and cream sauce hit those same Sunday-dinner notes. Nobody needs to know.
Genuinely wasn't sure almond flour could hold a cream sauce. I've tried low-carb substitutes that look promising and then break or turn grainy once they cool, so I went in skeptical. This one stayed smooth, coated the cauliflower evenly, and the cheddar and gruyere melted into it without any weird texture. My grandmother made gratin with a proper roux and I'd kind of written off that whole category of dish four months into keto. Actually eating this and not feeling like I was settling was bigger than I expected. I texted my sister after. It doesn't taste exactly like hers but I'm not mourning it anymore, and that's really the whole point.
crushed pork rinds mixed in with the top layer. obsessed.
Pork rinds on top is so obvious and I completely missed it. The crunch is what this gratin needed.
Made a double batch Sunday and it's been my lunch all week. Hard lesson learned: really squeeze the moisture out of the cauliflower if you're prepping ahead, or it gets watery by day three. Still ate every last container though!
Five days of gratin lunches is not a bad week. When I prep it ahead I also simmer the cream sauce down a couple extra minutes before adding the cheese, it keeps everything from going thin by day three.
My teenager went back for seconds and asked if it was some kind of pasta. Told him it was cauliflower and he just shrugged and kept eating. The gruyere does something to this sauce I wasn't expecting.
That's the gruyere. It goes nutty in the cream sauce in a way cheddar just doesn't. Shrug and keep eating is the whole review.
Squeeze the cauliflower until you think you've gotten it all out, then squeeze again. I skipped that step the first time and the sauce came out watery. Second batch was completely different.
Three rounds with dish towels is my floor. It looks dry after the first two and then you press again and there's still liquid coming through.
My son scraped every last bit of gruyere crust off the top before I could even serve it, and he's the one who spent four years telling me he hates cauliflower.
Four years of hating cauliflower, one gruyere crust. He probably skipped right past the cauliflower part entirely.
Wrung the cauliflower out way more than seemed necessary. Sauce stayed thick though. Swapped regular gruyere for smoked and it picked up the bacon better than I expected.
Smoked gruyere with bacon is a really good instinct. The smokiness layers instead of just sitting on top. Filing that away for the next time I make it.
Made this for a small dinner on Saturday and the gruyere completely caught people off guard. One friend kept asking what cheese I used because the flavor was nothing like the usual cheddar. Only told her after the dish was empty that it was cauliflower. The extra step of squeezing out the moisture felt fussy, but the sauce stayed thick and creamy the whole meal, no pooling. Making it again next time we have people over.
Gruyere does that every time. People can't name it so they just keep eating. Best not to say anything until the dish is empty.
The squeeze step is where this either works or doesn't, and I undersold it the first time. Paper towels got maybe a third of the moisture out. Switched to a thin dish towel and wrung it out over the sink the way you would a wet chamois cloth, and the sauce came together without breaking and the whole thing set up the way it's supposed to. Worth knowing on the gruyere too: buy a block and grate it yourself, pre-shredded has anti-caking agents that mess with the melt and you end up with a grainier sauce than you want. Let it rest about five minutes before serving, the sauce tightens up and you get cleaner slices. Four stars because I'd push the bacon to at least a full cup next time, but the base recipe is solid once you figure out the moisture.
Yeah, block gruyere only. Pre-shredded doesn't melt right in cream sauce, the anti-caking coating is the issue. And the chamois cloth comparison is accurate, paper towels quit halfway through.
This has been on my Sunday dinner rotation since fall, and I finally cracked what takes it from good to freaking good: squeezing every last drop of moisture out of those cauliflower florets. I mean really press them, more than seems necessary. Started using a clean kitchen towel instead of paper towels and the sauce came together completely differently, no thin spots, no watery pooling at the edges. I also started subbing the gruyere with extra sharp cheddar so it's all cheddar, and the sharpness cuts through the richness in a way I like better. Six batches in, and this latest version with the hard press and the all-cheddar swap is the one I'm sticking with. The sauce clings instead of pools and the top gets this golden, slightly chewy crust that I wasn't getting before.
The gruyere actually softens the sharpness. Nuttier but milder. Yeah, all sharp cheddar against that cream sauce is going to cut differently. Haven't done that full swap myself but I'm going to now.