Season the beef cheeks generously with salt and pepper.
Heat olive oil in a heavy pot (like a Dutch oven) over medium-high heat. Brown the cheeks on all sides, then remove and set aside.
In the same pot, add onion, carrot, and celery. Cook for 8 minutes until softened. Add garlic and cook for another minute.
Stir in tomato paste and smoked paprika, cooking for 1–2 minutes to deepen the flavour.
Pour in the red wine and scrape the bottom of the pot to deglaze. Simmer for 5 minutes until slightly reduced.
Return the cheeks to the pot along with bay leaves, thyme, rosemary, orange zest, and beef stock. The cheeks should be mostly submerged.
Bring to a gentle simmer, then cover with a lid. Reduce heat to low and cook very gently for 3–3.5 hours, or until the cheeks are fork-tender. Check occasionally and add a splash of stock or water if the liquid reduces too much.
Remove the beef cheeks and herbs from the pot. Strain the sauce through a fine sieve if you like a smooth finish, then return it to the pot. Simmer uncovered over medium heat for 15–25 minutes, or until reduced to a glossy, velvety consistency that coats the back of a spoon. Season to taste. I like to strain the sauce because that’s how I had it in Spain, but if you can’t be bothered, you can skip this step and keep it more rustic.
Return the cheeks to the sauce and serve hot with mashed potatoes or crusty bread.