Low Carb Ham & Swiss Ziti Casserole
Published April 6, 2026 • Updated May 17, 2026
This post may contain affiliate links. See my disclosure policy.
This low carb ham and swiss ziti casserole is my kind of comfort food…easy, cheesy, and made with protein-packed lupini pasta so it actually keeps you full. I mix in smoky ham, melty swiss, spinach, and a creamy sauce for a cozy dinner that tastes like the classic, just without all the carbs.
This is one of those lazy casseroles I lean on when I want something hearty and cozy, but I’m not in the mood to spend an hour in the kitchen. It’s also one of my favorite ways to use up leftover ham, especially after a holiday when you’ve got random slices sitting in the fridge and no real plan for them. I can throw this together pretty quickly, slide it in the oven, and suddenly it feels like I actually tried…when in reality, this recipe is doing most of the heavy lifting.

Instead of traditional pasta, I’m using lupini-based ziti, which keeps the carbs low but still gives you that familiar pasta bite. As someone who’s tested a lot of low carb pastas over the years, I can tell you not all of them are worth it, but this one holds up really well in a baked casserole. Plus, it’s gluten-free…if that’s important to you. It doesn’t turn mushy, and it actually absorbs the creamy cheese sauce, which is key here. You still get that classic ham and cheese pasta feel, just without the excess carbs!
For the flavor, I keep it simple but intentional. The smoky ham, nutty melted swiss, and a handful of spinach balance each other out so it’s not just a heavy cheese bomb. I also layer in aromatics and seasoning to build that depth you expect from a comfort food dish. From a nutrition standpoint, this ends up being higher in protein thanks to the lupini pasta and ham, which means it’s a lot more filling than your typical casserole…and you’re not hungry again an hour later digging through the pantry.
What I’ve learned after making recipes like this for years, especially for my family, is that easy wins matter. This is the kind of dinner that gets everyone to the table without complaints, uses up what you already have, and doesn’t leave you with a sink full of dishes. It’s familiar, it’s practical, and it actually fits into a low carb, high protein lifestyle without feeling like you’re missing out.
Explore hundreds of keto recipe videos with step-by-step instructions, tips, and tricks to make keto easy.
Ingredients
8 oz keto ziti noodles
3 tablespoons butter
1/4 cup chopped medium yellow onion
1 tablespoon chopped garlic
10 oz package frozen chopped spinach, thawed & well drained
1/4 teaspoon cayenne pepper
2 tablespoons cornstarch or 2 teaspoons arrowroot powder
2 cups milk of choice
2 tablespoons Dijon mustard
3 cups cooked diced ham
7 oz package Swiss cheese, divided
1/2 teaspoon dried rosemary needles
3/4 teaspoon salt
1/2 teaspoon ground black pepper
Step by Step Instructions
Step by Step Instructions
Cook pasta
Cook pasta according to package directions, drain and set aside.
- 8 oz package of lupini ziti pasta
Saute aromatics
Meanwhile, in a large skill, melt butter over medium heat. Add onion and garlic, saute until onion is softened, about 3-4 minutes.
- 3 tablespoons butter
- 1/4 cup chopped yellow onion
- 1 tablespoon chopped garlic
Add spinach and thicken
Add spinach and cayenne pepper, continue cooking until all liquid is absorbed. Stir in cornstarch or arrowroot powder and cook for 1 minute.
- 10 oz package frozen chopped spinach, thawed & well drained
- 1/4 teaspoon cayenne pepper
- 2 tablespoons cornstarch or 2 teaspoons arrowroot powder
Make it creamy
Stir in milk and mustard, cook until thickened.
- 2 cups milk of choice
- 2 tablespoons Dijon mustard
Add ham and cheese
Stir in ham, cooked pasta, half of the swiss cheese, rosemary, salt and pepper. Mix well until combined.
- 3 cups cooked diced ham
- cooked pasta
- 3.5 oz Swiss cheese
- 1/2 teaspoon dried rosemary needles
- 3/4 teaspoon salt
- 1/2 teaspoon black pepper
Bake
Transfer to a greased baking dish, top with remaining cheese. Cover and bake at 350 degrees F for 30 minutes.
- 3.5 oz Swiss cheese
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 use a different low carb pasta instead of lupini ziti?
Yes, but not all low carb pastas behave the same. I’ve tested quite a few, and lupini pasta holds up really well in baked dishes without getting mushy. If you swap it, look for one that can handle baking, otherwise you might end up with a softer texture.
Do I have to use cornstarch or arrowroot powder?
This helps thicken the sauce so it clings to the pasta instead of being watery. If you’re strict low carb, go with arrowroot or even a tiny pinch of xanthan gum, but don’t skip it completely or the sauce won’t come together the same.
Can I make this ahead of time?
Yes, and honestly this is a great make-ahead meal. You can assemble everything, cover it, and store it in the fridge for up to 24 hours before baking. Just add a few extra minutes to the bake time if it’s going in cold.

My son watched me drain the spinach and immediately declared he wasn't eating it. Then he took one bite and forgot he was supposed to be protesting. The Dijon is doing something sneaky and I'm not mad about it.
Made this for a cookout last weekend and my friend who just started keto texted me that night asking where I got the pasta because she genuinely thought it was regular ziti. The creamy swiss sauce is freaking unbelievable over lupini noodles.
Fourth or fifth time making this and I finally started squeezing the spinach in a dish towel instead of pressing it with a spoon. Sauce stays so much thicker, no wateriness. Won't go back.
Yeah, spoons don't cut it. Even pressing hard I'd still get that wateriness. The dish towel gets the last 20% out and that's exactly what keeps the sauce thick.
My son has a radar for keto swaps and usually calls them out right away. Made this on a Wednesday night, and he was halfway through his portion before he asked what kind of pasta it was. Not 'is this keto?' Just curiosity. I told him lupini beans and he shrugged and kept eating. The creamy swiss sauce with the Dijon in it really does carry the whole thing.
I've tried probably four or five different low carb pasta bakes over the past year looking for something that actually feels like real comfort food and most of them are passable but something's always off. This one figured out the thing the others miss. The Dijon mustard in the sauce is what I keep thinking about, that sharpness cutting through the swiss and ham so it doesn't just taste heavy and monotonous. I've used other pasta substitutes before that turn to mush but the lupini ziti held up through reheating, which is usually where these casseroles lose me completely. Even the spinach wasn't an afterthought, it absorbed into the sauce in a way that made the whole thing feel substantial instead of like a health checkbox. This is the version I'm actually sticking with.
Reheating is where most of these fall apart and lupini just doesn't do that. And the Dijon almost didn't make the final cut for that sauce. Glad I kept it.
I've tried at least four keto pasta casseroles over the past year and the sauce on most of them either breaks or turns gluey when it cools. The Dijon here keeps it from going flat, and the lupini pasta holds up better than the shirataki I usually reach for.
Yep, the Dijon helps bind the sauce so it doesn't break when it cools. Shirataki gets waterlogged in baked dishes anyway.
The spinach drain step is not optional, learned that the hard way. First time I thought squeezing it over the sink was good enough but the sauce broke and went watery on me. Second batch I pressed it in a clean dish towel until nothing came out and the cream sauce thickened up around the lupini pasta the way it's supposed to. Also went half swiss half gruyere on that second run and that nuttiness against the dijon is freaking good.
Half gruyere was a smart call, the nuttiness against the dijon is real. And yeah, dish towel the spinach until nothing comes out. Squeezing over the sink looks like enough. It's not.
Brought this to a spring potluck last weekend and fielded three separate 'what pasta is this?' questions from people who weren't eating low carb. Told them lupini, got blank stares, they came back for more anyway.
Every single time with lupini. Nobody knows what it is, and somehow that never stops them from going back for more.