Preheat oven to 350 degrees. Grease a 9" x 13" pan and set aside.
Add olive oil to a large pan or skillet and heat over medium high heat. Add onion and saute for 3 minutes. Add garlic and saute 1 more minute until fragrant. Add ground beef and saute, breaking up as you go,1 until browned.
Drain beef and return to pan. Season with 1 teaspoon of Italian seasoning and mix well with 2 cups marinara sauce and set aside.
While the beef cooks, boil spaghetti in well salted water for 3 minutes less than the al dente time listed on the package.
Drain and return to the pot and mix well to combine with 1 cup marinara sauce. Set aside.
In a medium bowl combine cream cheese, ricotta cheese, garlic powder and remaining teaspoon of Italian seasoning. Mix well.
Assemble the casserole: Place half the spaghetti in an even layer in the 9" x 13" pan. Evenly spread the cheese mixture over the top of the spaghetti. Place the remaining spaghetti in a single layer over the top of the cheese. Spread the beef and sauce mixture evenly over the top of the spaghetti. Sprinkle with mozzarella cheese.
Bake for 30 minutes or until the top is golden brown. If you want it browner, broil for 2-3 minutes, but keep a close eye on it so the cheese doesn't burn. Serve immediately.
Make Ahead: You can build the casserole up to 24 hours in advance. Let it cool then cover with foil or plastic wrap and store in the refrigerator. Take it out of the fridge and set it on the counter while the oven preheats.Storage: Leftovers will be good for up to 3 days. Store, tightly covered, in the fridge and reheat portions in the microwave or the entire pan in the oven.Freezer: Freezing this dish after it's been baked is not recommended, however, this a a great make ahead recipe! Use a disposable foil pan and freeze unbaked spaghetti casserole, tightly covered for up to 1 month. Thaw in the fridge overnight, then bake as directed.