Preheat oven to 350 degrees F.
Bring 4 quarts of water to a boil in a large pot. Add the spaghetti and cook for 11 to 14 minutes or until done, then pour into a strainer and rinse with cold water to cool.
While the spaghetti cooks mix together the mozzarella cheese, ricotta cheese, half-and-half, Italian herb seasoning, salt, and garlic powder in a large bowl. Combine the cheese mixture with the cooked spaghetti.
Spray a 9x13-inch baking pan with a generous coating of olive oil non-stick spray. Pour the spaghetti mixture into the dish and spread it out with a spatula until it is flat, but don't pack it down. Cover the dish with foil and bake for 40 to 45 minutes or until the inside edges begin to turn light brown. Remove the dish from the oven and keep it covered.
While the dish is baking, make the meat sauce by browning the meat in large saute pan over medium heat. Use a potato masher to crumble the meat into smaller pieces as it cooks. Drain off most of the fat, then remove the browned meat and set it aside. Don't wash out the pan since you'll be using it in the next step. You want it greasy.
Add the onion and garlic to the pan and cook for just a few minutes over medium heat until the onion and garlic are beginning to brown. Add the meat back to the pan along with two jars of marinara sauce. Cook until the sauce begins to bubble, then reduce heat and simmer for 15 minutes.
When you are ready to serve the dish, slice the pasta into 6 square servings. Place each serving on a plate and 1 cup of the meat sauce over the top of the pasta. Sprinkle each serving with 2 tablespoons of shredded Parmesan cheese.