I’ve included a picture of the fresh mozzarella I used – notice how the label clearly says it contains 0 grams of sugar. This certainly isn’t the case for all brands of mozzarella, especially fresh, but it’s totally possible to find some.
For the tomato sauce
4 Tbsp. olive oil
3 garlic cloves, minced
1 tsp. crushed red pepper, plus more to taste (1 pinch is plenty for me!)
2 x 28-oz. cans whole peeled tomatoes
1 tsp. fine sea salt, plus more to taste
For the béchamel
2 Tbsp. unsalted butter
2 Tbsp. plain flour
2 cups lactose-free whole milk, warmed (but not boiled)
½ tsp. fine sea salt, plus more to taste
¼ tsp. ground nutmeg, plus more to taste
For the rest of the dish
16 oz. dry ziti or rigatoni (or even penne)
8 oz. lactose-free fresh mozzarella cheese, cut into ½-inch cubes
1 cup (50 g) freshly grated parmesan
1 cup (50 g) panko bread crumbs
1-2 pinches of nutmeg
½ tsp. crushed red pepper (optional - I left it out)
2 Tbsp. olive oil
1 handful of fresh basil leaves, sliced or torn into small pieces
Position a rack in the top third of the oven, preheat it to 375 °F, and brush a 9”x13” ceramic or glass baking dish with olive oil.
Make the tomato sauce
Pour the olive oil into a 3- or 4-quart saucepan and warm over medium-high heat. Stir in the garlic and crushed red pepper and cook for about 1 minute or so, until fragrant. Add the tomatoes, smooshing them up in your hands as you drop them in the pot along with all the juices. Stir in the salt, turn the heat up to high, and bring to a boil. Lower the heat and simmer for about 10 minutes, stirring occasionally, until slightly thickened. Taste and add more salt if you'd like. Remove the pot from the heat and set aside.
Meanwhile, make the béchamel
Melt butter in a clean 3- or 4-quart saucepan over medium heat. Add the flour and stir for a couple of minutes to form a pale brown paste. Very slowly add the warmed milk while whisking continuously. Bring the sauce to a boil and cook for about 5 minutes, whisking the whole time, until it thickens. Remove pot from the heat, stir in the salt and nutmeg, then taste to see if you need any more of either. Set aside.
Make the pasta and assemble the dish
Bring a large pot of salted water to a boil and add the pasta. Cook until it's 3 to 4 minutes short of being done (it will finish cooking in the oven). Drain and transfer to your largest bowl.
Add the tomato sauce, béchamel, mozzarella and about three-quarters of the parmesan and mix well. Transfer mix into prepared baking dish and scatter the ziti with the remaining parmesan.
In a small bowl, toss the bread crumbs with a pinch of nutmeg, some extra red pepper if you want a little extra heat (I did not), and 2 tablespoons of olive oil and sprinkle over the top.
Bake until the ziti is bubbling and the top is brown, about 15 minutes. Remove from the oven and let rest for 10 minutes, then scatter the sliced basil over the top and serve.