Heat some cooking oil in a large frying pan over a medium-high heat. Add the onion and cook for 5 minutes until softened.
Add the beef mince and cook until deeply browned, breaking it up with a spoon as it cooks.
Stir in the garlic and tomato paste. Cook for 1 minute.
Pour in the chopped tomatoes, passata and beef stock. Season well, stir through, then simmer gently for 20 minutes.
Meanwhile, bring a large pan of salted water to the boil and cook the rigatoni for 2 minutes less than the packet instructions. Drain, reserving a splash of the pasta water.
Add the rigatoni and a splash of the reserved pasta water. Mix until everything is well coated.
Add the butter, flour and milk to a saucepan. Place over a medium heat, whisking continuously until thickened. Stir in the parmesan and season with salt and black pepper.
Preheat the grill. Tip the pasta into a large baking dish. Pour over the béchamel, then scatter over the mozzarella and cheddar.
Pop it under the grill for 5-8 minutes until golden, bubbling and crisp around the edges. For best plating results leave it to stand for 10 minutes.