Heat the olive oil in a large, heavy-based saucepan over a medium–high heat.
Add the minced beef and cook, breaking it up with a wooden spoon, until browned all over, about 6–8 minutes. Drain off any excess fat.
Reduce the heat to medium and add the chopped onion. Cook, stirring occasionally, until softened and translucent, about 5–7 minutes. Add the garlic and cook for about 1 minute, until fragrant.
Stir in the tomato purée and cook, stirring constantly, for 2–3 minutes to develop the flavour.
Pour in the chopped tomatoes and beef stock. Add the oregano, basil, bay leaf, caster sugar, salt, black pepper and chilli flakes (if using). Stir to combine.
Bring to a gentle simmer, then reduce the heat to low and partly cover the pan. Simmer for 1–2 hours, stirring occasionally to prevent sticking. If the sauce becomes too thick, add a splash of water.
Remove and discard the bay leaf. Taste and adjust the seasoning with more salt and pepper, if needed.
Serve over cooked spaghetti or your favourite pasta. Sprinkle over freshly grated Parmesan and serve with crusty garlic bread.