Preheat the oven to 400 degrees F.
In a large frying pan, melt butter over medium-low heat. Add diced onion and cook for 7-8 minutes, until softened and translucent. Add garlic, salt, and pepper, and cook for another minute.
Add fresh spinach, tossing until wilted.
Pour in the heavy cream and sour cream or Greek yogurt. Give it a good stir, and reduce heat to simmer for 5 minutes.
Add the artichoke hearts, Parmesan cheese, and fresh lemon juice. Mix into spinach mixture, and simmer for an additional 5 minutes.
Bring a large pot of salted water to a boil. Cook pasta according to (al dente) package instructions. (The pasta will continue to cook in the oven, and we want to avoid mushy pasta!)
Drain the pasta and reserve 1 cup of pasta water. Add pasta to the creamy spinach mixture along with the reserved pasta water (this will help the sauce stick to the pasta), and stir until well combined.
Transfer pasta mixture to a 9"x13" baking dish and top with mozzarella cheese and red pepper flakes (if using).
Bake for 15-20 minutes, until the sides are bubbly and the cheese starts to turn golden brown on top. Let rest for 5 minutes before serving.