Preheat and prep: Heat the oven to 375°F (190°C).
Grease a 9x13-inch baking dish. If using standard lasagna noodles, boil in salted water until just shy of al dente. Drain and lay flat on a lightly oiled sheet to prevent sticking.
Cook the aromatics: Warm olive oil in a large skillet over medium heat.
Add onion and cook until translucent, about 4–5 minutes. Stir in garlic for 30 seconds, just until fragrant.
Brown the meat (or sauté mushrooms): Add ground beef, turkey, or sausage. Season with salt, pepper, and half the Italian seasoning.
Cook until browned, breaking it up as it cooks. Drain excess fat. For a vegetarian version, cook mushrooms until they release their moisture and brown, about 7–8 minutes.
Build the sauce: Stir in marinara, remaining Italian seasoning, and red pepper flakes if using.
Simmer 5 minutes to marry the flavors. Taste and adjust salt and pepper.
Mix the cheeses: In a bowl, combine cottage cheese, ricotta (if using), 2 cups mozzarella, Parmesan, egg, a pinch of salt, and a few grinds of pepper. Fold in chopped spinach if desired.
The mixture should be thick and creamy.
Layer it up: Spread 1 cup sauce on the bottom of the baking dish. Add a layer of noodles. Spoon and spread a third of the cheese mixture over the noodles.
Add a layer of sauce. Repeat layers two more times: noodles, cheese, sauce. Finish with a final layer of noodles, then top with the remaining sauce and the last 1 cup of mozzarella.
Cover and bake: Cover tightly with foil (tent it slightly so it doesn’t stick to the cheese).
Bake for 25 minutes.
Uncover for the finish: Remove foil and bake another 15–20 minutes, until bubbly and the top is lightly browned. If you like extra color, broil for 1–2 minutes—watch closely.
Rest and garnish: Let the lasagna rest 10–15 minutes so the layers set. Sprinkle with fresh basil or parsley before slicing.