Add the oil to a non stick frying pan and cook the onion for 2 mins on a medium heat, until soft. Add the beef, breaking it up with a wooden spoon until browned – about 5 - 6 minutes.
Drain the fat and discard. Add the garlic for 1 further minute and season to taste. Add about 2 cups of the tomato sauce. Simmer for 5 mins until nice and thick. Set aside.
Cheese sauce
In a clean non-stick sauce pan, heat the butter and garlic over medium heat and cook until the garlic starts to release flavor - about 1 minute.
Add the cream, 1/2 cup of the mozzarella, cream cheese, and 1/4 cup parmesan cheese. Stir with a hand whisk and simmer on a low heat until the cheese is melted and runny. Add 3 - 4 tbsp of water or more cream until you reach your desired thickness. I used 3 tbsp of water.
Zucchini
Slice the zucchini into long slices using a mandoline (about 3mm thick) or slice thin using a knife. They need to be thin enough to roll but not too thin that they fall apart when filled with mixture. I find a vegetable peeler does them a bit too thin, but if you do make them to thin you can always layer 2 or 3 strips together.
Assembly
Place the remaining tomato sauce mix into the bottom of your baking dish (I used a 10 x 8 x 2 inch dish) and top with 1/3 cup of cheese sauce.
Add about 1 tbsp of mix at one end of a strip of zucchini (or double line if thin) and roll up. Place in your baking dish with the filling facing upwards. Repeat with the remaining zucchini and cannelloni mix.
Top with the remaining cheese sauce and sprinkle with the rest of the mozzarella and parmesan cheese. Bake in the oven for 25 - 30 minutes until golden on top and the cheese is all bubbly and runny!