Heat olive oil in a pan over medium heat. Add the diced onion, season with salt and pepper, and cook until soft and translucent.
Stir in the butter, then add the passata and fresh basil. Let the sauce simmer gently for 20–25 minutes.
Bring a large pot of salted water to a boil and cook the ziti until just shy of al dente. Drain and set aside.
In a large bowl, combine the pasta with the tomato sauce, ricotta, and ½ cup Parmigiano Reggiano. Mix until well combined.
Spread a thin layer of sauce on the bottom of a baking dish.
Add half of the pasta mixture. Top with ⅓ of the mozzarella and a sprinkle of Parmigiano.
Add the remaining pasta mixture, then finish with the remaining mozzarella and more Parmigiano.
Bake in a preheated 375°F oven for 25–30 minutes, until bubbling and golden on top.
Let rest for 10 minutes before serving.