Preheat oven to 350°F
In a medium sauté pan, cook diced onions and garlic in 1 tbsp butter over medium heat until onions are translucent, about 6 minutes. Set aside.
Add spinach to the same pan (without rinsing) and cook until it is wilted and cooked down, about 4 minutes. Remove from pan and drain well. Squeeze out any excess liquid from the spinach. Set aside.
Add potatoes to a large pot and cover with cold water. Add a big pinch of salt to the water. The water should taste a little salty.
Bring to a boil over med-high heat and cook for 15 – 18 minutes, or until potatoes are easily pierced with a knife.
While potatoes are cooking, heat cream over low heat in a small sauce pot.
Drain potatoes and push through a potato ricer while still hot.
Over low heat, stir potatoes with wooden spoon or heat-resistant spatula for one minute to let some of the moisture evaporate.
Add warm cream, remaining butter, parmesan cheese, salt and pepper to potatoes. Using an electric mixer, beat potatoes 3 – 4 minutes, until thoroughly combined.
Add spinach, garlic and onions, beat with electric mixer until spinach is incorporated, 2 – 3 minutes.
Placed mashed potato mixture into a 1.6L casserole dish, sprinkle the top with remaining 2 tbsp parmesan cheese and bake for 20 minutes until golden and bubbling