Keto Cauliflower Gratin
Published January 10, 2021 • Updated March 7, 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 687+ 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.




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.
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.
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.
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.
I make a batch of this every Sunday and it holds up through the week way better than I expected (cream sauces usually break on me by day two). The thing that made the difference was really committing to squeezing out the cauliflower moisture with a dish towel before it goes in, otherwise it gets watery on reheat. The gruyere is doing something special in that sauce and I've stopped making other cauliflower recipes since I found this one.
The gruyere is what holds that sauce together on reheat. Sharp cheddar alone wouldn't make it three days.
I was convinced the cauliflower would just turn watery and ruin that cream sauce, but squeezing it out in the towels actually works. The gruyere gives it this nutty depth I wasn't expecting. Genuinely surprised.
The towel step is the one I was most skeptical about writing into the instructions. Glad it actually holds up out there.
The moisture step is where this recipe either works or doesn't. Rushed it the first time and ended up with a watery sauce that never quite set. Now I press the florets twice and wait a full 10 minutes before they go anywhere near the pan, and the gratin comes out thick and creamy the way it's supposed to. Also, the gruyere does something the cheddar alone can't, so don't skip it.
Yeah, two rounds on the towels matters. First press gets most of it, second catches what's still working its way out. I don't skip that ten-minute wait anymore.
I've made cauliflower gratin from a few different recipes over the past year and the gruyere is what sets this one apart. The others end up tasting like cheesy vegetables. This one actually tastes like gratin. Would probably add a bit more bacon next time, but that's on me.
More bacon is never a bad instinct. Eight slices instead of six is where I land when I'm not sharing. And you nailed it on the gruyere, sharp cheddar alone just makes cheesy vegetables.
Been batch cooking this on Sundays for about a month now and the reheating game took me a while to crack. Squeeze out the cauliflower way more aggressively than you think, and I mean really lean into it with the towels. When I skimped on that step the gruyere sauce broke on reheating and the whole thing got watery and sad. Now I press for a full minute and the leftovers are freaking indistinguishable from fresh. Portion into individual containers right after it cools, reheat covered at 50% power first minute then full power for 45 seconds, and it holds. The bacon actually crisps back up in the microwave which blew my mind a little. Four containers ready every Sunday and I'm not even close to tired of it.
The bacon crisping back up in the microwave is the part I didn't expect either. That first minute at 50% is what saves the gruyere. Going straight to full power breaks the sauce every time.
Made this eight or nine times now. The moisture step is the one I keep refining. Originally just patting the florets dry, now I press hard with a clean towel and let them sit a full five minutes before they go in. The sauce comes out completely different when you get that step right, thicker, clings to every piece. Gruyere is non-negotiable for me. Cheddar alone doesn't have that nutty depth. I bump the oven to 385 for the last ten minutes to get real color on top. Cold winter nights, this is on the table every other week.
The five minute sit is the part I kept skipping and wondering why my sauce wasn't thicker. And yeah, 385 at the end. That's how the gruyere actually browns.
I'm new to keto cooking and this is my first time making a gratin, so bear with me. When you melt the butter and stir in the almond flour before the cream, does the sauce thicken like a regular bechamel, or does almond flour behave differently and stay thin before it comes together? I bake with almond flour all the time but never in a hot cream sauce, so I have no idea what to expect. Scared I'll pull it too early thinking something's wrong, or overcook it chasing thickness. Is there anything visual to watch for, like coating the spoon or a color change, that tells you it's actually ready for the cheese? Making this Saturday and that step has me nervous.
Almond flour doesn't work like wheat - no starch, so it won't gel the same way. You're not chasing bechamel consistency here. Watch for the cream to just barely coat the back of a spoon, then go straight to the cheese. It thickens up in the oven.
This recipe was perfect! I cooked a head of cauliflower for 2 minutes in my instapot. I am excited to try more recipes!!😊
IP works well here. Just press the florets really dry after, pressure cooking traps more moisture than steaming and that extra liquid goes straight into the cream sauce.
This recipe is delicious! The whole family loved it. I roasted the cauliflower instead of steaming to avoid issues with moisture. It was perfect.
How long did you roast it?