Skip to content
KETOFOCUS.

Spooky treats, zero sugar — keto Halloween recipes. Trick or Treat →

Low Carb Ham & Swiss Ziti Casserole

Ham and swiss ziti casserole, cheesy and creamy over protein-packed lupini pasta — 8.2g net carbs and 28.6g protein per serving. Smoky ham, melty swiss, and spinach make it taste like the cozy classic.
  • 8.2gnet carbs
  • 28.6gprotein
  • 50minutes
  • 8servings

This post may contain affiliate links. See my disclosure policy.

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.

Overhead view of ham and Swiss ziti casserole baked until bubbly and golden in a white baking dish.

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.

Tube-pasta casserole with a melted pale topping, diced pink pieces and leafy greens.

Storage information

Store any leftovers in an airtight container in the fridge for up to 4 days. When reheating, you can use the microwave for a quick option or warm it in the oven covered with foil so it doesn’t dry out, you may want to stir in a splash of milk to bring the sauce back to life.

This is also a great make-ahead casserole. You can assemble everything, cover it tightly, and refrigerate it up to 24 hours before baking. When you’re ready to cook, just bake as directed, adding a few extra minutes since it’s going in cold.

Freezer instructions

This casserole freezes really well, which is one of the reasons I love it for busy weeks. You can freeze it either before or after baking.

If freezing before baking, assemble everything in a freezer-safe dish, wrap it tightly in plastic wrap and foil, and freeze for up to 2 months. When ready to cook, thaw it overnight in the fridge, then bake as directed, adding a few extra minutes if needed.

If freezing after baking, let the casserole cool completely first, then portion it out or freeze the whole dish. Reheat from thawed in the oven covered, or microwave individual portions. I like to add a splash of milk when reheating to bring back that creamy texture.

Discover more keto recipes on our channel Hundreds of keto recipe videos, with step by step instructions and the tips that make keto easy.
KetoFocus
The recipe

Low Carb Ham & Swiss Ziti Casserole

Print Pin
Prep 10 min Cook 40 min Total 50 min Serves 8

Ingredients

Servings 8

Low Carb Ham & Swiss Ziti Casserole Ingredients

Step by Step Instructions

  1. Cook pasta

    Cook pasta according to package directions, drain and set aside.

    For this step

    • 8 oz package of lupini ziti pasta
    Cooked lupini ziti pasta being drained in a colander over a pot.
  2. 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.

    For this step

    • 3 tablespoons butter
    • 1/4 cup chopped yellow onion
    • 1 tablespoon chopped garlic
    Butter melting in a skillet as garlic begins to sauté.
  3. 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.

    For this step

    • 10 oz package frozen chopped spinach, thawed & well drained
    • 1/4 teaspoon cayenne pepper
    • 2 tablespoons cornstarch or 2 teaspoons arrowroot powder
    Chopped spinach being cooked in a skillet with seasoning and thickener added.
  4. Make it creamy

    Stir in milk and mustard, cook until thickened.

    For this step

    • 2 cups milk of choice
    • 2 tablespoons Dijon mustard
    Creamy spinach sauce being stirred in a skillet until smooth and thickened.
  5. Add ham and cheese

    Stir in ham, cooked pasta, half of the swiss cheese, rosemary, salt and pepper. Mix well until combined.

    For this step

    • 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
    Cooked pasta and diced ham being mixed into the creamy spinach sauce.
  6. Bake

    Transfer to a greased baking dish, top with remaining cheese. Cover and bake at 350 degrees F for 30 minutes.

    For this step

    • 3.5 oz Swiss cheese
    Pasta mixture spread into a baking dish and topped with slices of Swiss cheese before baking.

Nutrition

Per serving: 1/8 of recipe

Calories
306
Fat
16.2g
Protein
28.6g
Total carbs
16.7g
Net carbs
8.2g

Nutrition is an estimate calculated from the ingredients listed. Brands vary, so check labels if you track closely.

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.

Browse by ingredient
Similar recipes

People who cooked Low Carb Ham & Swiss Ziti Casserole also made

Reviews

Tap to rate

4.8 from 19 ratings, 14 written

Made this recipe?

Replying to Brianna

Your rating

Chris

This casserole tastes like the ham and swiss sandwich I actually want, just in a pan. I used arrowroot instead of cornstarch and it thickened up the same, no difference I could tell. I do give the spinach one more squeeze than seems necessary.

Reply

Lorraine

Made it last night, no changes. Clean bowls all around.

Reply

Annie Lampella

I’m so glad it worked straight off the card. Thanks for coming back to tell me, Lorraine!

Reply

Ray

Would heavy cream work instead of milk here, or will it make the sauce too thick to coat the pasta evenly?

Reply

Gina

I went back for seconds and I never go back for seconds! That sauce is unreal.

Reply

Annie Lampella

Thank you Gina! The Dijon is my favorite part of that sauce.

Reply

Rita

Splash of milk when reheating, sauce comes right back. Figured that out on the second batch. Been portioning this on Sundays and it holds through Thursday without the lupini going soft. Still haven’t nailed how dry the spinach needs to be though, mine goes watery when I’m lazy.

Reply

Annie Lampella

The towel trick is the only real answer for the spinach. Dump it in the center of a clean dish towel and twist hard, like you’re trying to wring out a wet shirt. Paper towels take forever and still leave moisture. And the splash of milk on reheat is such a good catch, stealing that.

Reply

Rita

Fresh spinach was the fix for me, wilt it in the pan first and there’s barely any moisture. No more watery sauce.

Reply

Melissa

Thought pasta bakes were behind me. Apparently not.

Reply

Annie Lampella

Melissa, same. Lupini ziti was what I’d been missing. Most low carb pastas go soft the second a creamy sauce hits them, but lupini holds. My family stopped asking what it was. The texture held up just like real ziti. No question. The ham and swiss with the dijon in the sauce makes it taste like an actual casserole.

Reply

Kevin

Smelled like a real ham casserole out of the oven. I didn’t trust lupini in something baked, figured the smell would give it away. It didn’t.

Reply

Annie Lampella

Kevin, lupini has almost no smell of its own, which is why it disappears into a baked dish. The ham and Dijon do all the work, and I’ve never had anyone clock it on the first bite.

Reply

Kevin

Ha, that’s exactly what I was doing, hovering over the pan the whole time.

Reply

Brianna

Honestly shocked the sauce came together so fast, I was sure I’d blow the roux, but it thickened right up once the milk went in. First time with lupini pasta and I was braced for weirdness, but they just absorbed everything and disappeared. Went heavy on the swiss and I’d pull back next time, so four stars until I get the ratio right. Already have a second batch planned.

Reply

Annie Lampella

Swiss intensifies once it bakes. I keep the reserved portion on top thinner than feels right going in and the dijon actually stays in balance.

Reply

Rachel

Anyone else tried pork rind crumble on top? Had a half bag sitting around so I just crushed them over before it went in the oven. Was not prepared for how much it changed things. Sauce stays creamy underneath and then you hit that salty crunch, completely different casserole. Doing this every time now.

Reply

Annie Lampella

Pork rinds on a hot baked casserole, hadn’t even thought of that. The cream sauce here is thick enough to hold up under it and that salty crunch on top sounds exactly right.

Reply

Tara

My 10-year-old watched me add the spinach and gave me the look, so I was fully prepared for a battle at dinner. She cleaned her bowl without a word. I think the dijon-cream sauce does something to the spinach where it just kind of melts into the whole thing instead of announcing itself. The lupini pasta held up better than I expected too (we’ve had some mushy casserole situations before). My husband’s only note was that he’d want more ham, which, fair, so I’ll probably bump it up a bit next time.

Reply

Annie Lampella

Pre-dinner look, clean bowl. That’s exactly how this one converts the holdouts. Your husband’s not wrong either, I’ve bumped the ham to 4 cups and the sauce handles it.

Reply

Drew

The creamy sauce and ham hit exactly right, but I’d cut the Dijon back by half next time because it’s competing with the swiss instead of backing it up.

Reply

Annie Lampella

Tried that and the sauce went flat. Two tablespoons in that much liquid is already pretty restrained, but if your Dijon runs sharp, half is worth a test.

Reply

Brandon

Four batches in. This is the casserole I’ve been looking for since going low carb two years ago. The thing that unlocked it: squeezing the spinach completely dry. First two times, the sauce thinned out before I got it to the table and I couldn’t figure out why. Wrung it in a dish towel until nothing came out, and the sauce stayed thick the whole time. That Dijon surprised me. It gives the whole thing this slight sharpness that cuts right through the richness. I make this Sunday nights and it holds through Thursday, which almost never happens with casseroles. 28g of protein per serving on something that tastes like this is still hard to believe.

Reply

Annie Lampella

Four batches to nail the spinach thing is actually fast, for the record. Paper towels took forever. Dish towel changed it all. No comparison.

Reply

Ana

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.

Reply

Annie Lampella

The Dijon disappears into the sauce but without it the whole thing tastes flat. Took me a few rounds to realize that. Your son is officially a convert.

Reply

Dana

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.

Reply

Annie Lampella

A shrug mid-bite is the best outcome. He just wanted to know what it was, not whether he should be eating it. That’s a different question.

Reply

Casey C.

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.

Reply

Annie Lampella

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.

Reply

Keep going

More Dinner Recipes

See all 172 Dinner recipes

Get new recipes from Annie

One email a week. Unsubscribe whenever you like.