Cook rigatoni pasta in a large pot of boiling salted water until al dente, about 2 minutes less than package instructions. Reserve ½ cup pasta water, then drain the pasta.
In a large Dutch oven, heat olive oil over medium heat. Add diced onion and minced garlic, cooking until soft and fragrant.
Add ground beef, cooking until browned. Drain excess grease. Return pot to stove and add crushed tomatoes, tomato sauce, salt, pepper, and red wine (if using). Stir in fresh basil and let simmer on low for 15-20 minutes.
In a small saucepan, melt butter over medium-low heat. Whisk in flour until smooth, then slowly add warmed milk and a dash of nutmeg, whisking until thickened.
Mix drained pasta with the meat sauce in the pot until well combined.
Spray a casserole dish with cooking spray. Layer half of the pasta and meat mixture, drizzle half of the béchamel, and sprinkle half of the mozzarella and Parmesan cheeses. Repeat layers.
Cover with foil and bake for 35 minutes. Remove foil and bake for an additional 5 minutes until golden and bubbly.
Let cool slightly before serving.
Send me this recipe!
Just enter your email below and get it sent straight to your inbox!
Notes
Store leftovers in an airtight container in the refrigerator for up to 3-4 days. Reheat in the oven or microwave until warmed through.