Preheat the oven to 325°F (165°C). Place the peeled garlic cloves in an oven-safe skillet, pour the olive oil over them, and roast for 20–30 minutes until the garlic is lightly browned, fragrant, and soft; begin checking at 20 minutes to avoid burning.
Reserve a little more than half of the garlic-infused oil in a small container and set aside. Transfer the roasted garlic to a blender and set aside.
Heat about 3 tablespoons of the reserved oil in a large skillet over medium heat. Add the chicken (do not crowd the pan) and cook, flipping occasionally, until cooked through and browned; cook in batches if needed and transfer cooked chicken to a plate.
To the blender with roasted garlic, add the chipotles with adobo sauce, the canned tomatoes, lime juice, salt, and black pepper. Blend until completely smooth.
In the same skillet, add a bit more of the reserved garlic oil and the diced onion. Sauté over medium-high heat about 5 minutes until the onion is lightly browned.
Pour the chipotle-tomato puree into the skillet with the onion and stir to combine, then reduce heat to medium-low.
Add the heavy cream, stir to combine, and cook for 1 minute to warm through.
Return the cooked chicken to the skillet, spoon sauce over the pieces, and gently simmer in the sauce for about 5 minutes to meld flavors and reheat the chicken.
Taste and adjust seasoning with additional salt, pepper, or cayenne if you want more heat.
Serve the chicken and sauce over rice, with bread, or a salad, and optionally garnish with queso fresco and/or minced cilantro to taste.