Arrange the tomatoes in a single layer on a rimmed baking sheet; sprinkle with the salt and pepper, and coat well with the olive oil. Roast for 35 minutes, or until the skins blister. Cool and purée; set aside.
Heat a large skillet over medium-high heat.
Add the butter, melt, then add the spinach and cook, stirring, until wilted.
Transfer to a cutting board and let cool. Squeeze the spinach dry and finely chop; place in a large bowl.
Add the egg and stir until well combined.
Add the mashed potatoes, Parmesan, and lemon zest, and season with more salt and pepper; stir until well combined. Stir in the bread crumbs, 1/4 cup at a time, until the mixture holds together. Pat into 2-inch by 1/2-inch-thick cakes. Dredge in the flour, patting off any excess.
Heat the canola oil in a large skillet over medium-high heat until hot but not smoking.
Add the cakes and cook until lightly browned, 3 to 5 minutes per side.
Arrange the cakes over the roasted tomato sauce. Top with mozzarella, if desired.