Add 4 cups raw spinach to a skillet over medium heat and cook just until wilted. Transfer the spinach to a clean towel or paper towels, let it cool slightly, then squeeze out as much liquid as possible. Chop the spinach finely and set it aside. This step matters more than it seems and makes the difference between a creamy dip and a watery one.
Drain the 14 oz artichoke hearts and squeeze out any excess liquid using a towel or mesh strainer bag. Chop them into small pieces so they distribute evenly throughout the dip, then set aside.
Add 1 cup cottage cheese, 1/2 cup Greek yogurt, 1/4 cup mayo, 1 clove garlic, 2 teaspoons Italian seasoning, 1 teaspoon onion powder, 1/2 teaspoon salt, and a dash of pepper to a food processor or blender. Blend until completely smooth. I always blend a little longer than I think I need to so the cottage cheese stays creamy once heated.
Transfer the blended base to a mixing bowl. Stir in the chopped spinach, chopped artichokes, 1 cup grated mozzarella cheese, and 1/4 cup grated Parmesan cheese until everything is evenly combined.