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 683+ 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
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).
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 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 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.
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?
How far ahead do you make this recipe? Do you bake it and leave it in the refrigerator and then bake in oven again to heat it up when you want to serve it?
I didn't bake it. I assembled it the day before and baked it the of. You can probably assemble it 1-2 days ahead of time
What size casserole dish do you use? I will need to double the recipe for Thanksgiving so want to use a large enough dish. Thanks!
It was a bit smaller than an 8x10 dish. So double the recipe and use an 8x10 or 9x13 casserole dish
H-E-B ? And your recipes sound delicious! Definitely gonna try some this thanksgiving.
Hi Laurinda! Let me recommend https://www.ketofocus.com/recipes/keto-pumpkin-pie/ and https://www.ketofocus.com/recipes/keto-chaffle-stuffing/..
Lastly, if search for "Thanksgiving" I have a ton of options!
This sounds perfect for my keto diet but even for company. I think it could be used for broccoli too, don't you think? I am hoping to try it soon. Loved the video about 10 things to keep in your fridge, never knew about macadamia milk and will try that. Thanks I ve just suscribed.
Broccoli works. Steam it a little less (it gets mushy faster than cauliflower). Same sauce, same method.
Made this today. It is very good, but way too powerful. I went back and added another pound of califlower and mixed it all up again and it was a much better balance. Also, it was too salty. Next time I would leave the salt out completely. Between the butter, bacon and cheese, it is salty enough. With that said it was delicious and so filling. It kept me full and not eating a bunch of other junk for hours. The guyere and thyme makes this so great.
Yeah the teaspoon of salt gets you when you're already working with bacon and gruyere. I'd pull it back to half or skip it entirely depending on your bacon. Nice fix with the extra cauliflower.
This looks yummy. Do you think this could be made dairy free ?
You could use nut milk and maybe some vegan cheese. Or just omit the cheese.