Cook the penne in a pan of boiling salted water according to packet instructions.
Meanwhile, peel and finely slice the onion, then cut the courgette into quarters lengthways and cut out the fluffy core. Slice the courgette at an angle, roughly 1cm thick – you want the pieces to be about the same size and shape as the penne.
Pick and chop the rosemary leaves, then slice the mackerel 1cm thick (removing the skin, if you like).
Put the onions and courgettes into a large frying pan on a medium heat with a lug of oil and a pinch of sea salt and black pepper, stirring occasionally.
After 5 minutes, add the rosemary and mackerel and cook for a further 5 minutes, or until nice and golden, tossing occasionally.
Meanwhile, whisk the eggs and milk together, then finely grate in the Parmesan.
Reserving a cupful of cooking water, drain the pasta and toss it into the mackerel pan.
Take the pan off the heat for a few seconds and stir in a good splash of the reserved water to cool it down (this is really important, because if you add your eggs when the pan’s still screaming hot, the heat will simply scramble them – you want the sauce to be silky smooth).
Quickly pour in the egg mixture and shake and stir together until thickened, silky and evenly coated, then plate up and serve with an extra grating of Parmesan, a good pinch of pepper and a squeeze of lemon juice, if you like.