Preheat the oven to 180°C fan/ 200°C/ 365°F. Coat the chicken breast in half the olive oil and roughly ¾ of the peri peri rub. Thinly slice the red onions.
Heat the remaining olive oil in a large pan, sear the chicken breast for 4-5 minutes on each side, until showing colour, then remove from the pan, transfer to a baking dish and bake in the oven for 10-15 minutes.
Add the onions, garlic and butter to the pan, stir to combine and cook for 10 minutes, over a medium-high heat, until the onions are soft and starting to turn jammy. Add the stock, milk, remaining peri peri rub, cream cheese and parsley to the pan, stir to combine and reduce the sauce over a high heat, for 10-15 minutes, stirring constantly, until the sauce is thick and creamy. Season to taste.
Bring a separate, large saucepan of salted water to the boil and cook the spaghetti for 6-8 minutes, until very al dente, then drain but reserve a generous amount of pasta water. Slice the chicken into bite-sized pieces once it's out the oven. Add the spaghetti and chicken to the pan, toss to combine, adding pasta water as needed to create a glossy sauce. Add in the parmesan and crispy chilli oil, toss again and serve immediately.
