Preheat the oven to 375°F.
Before you start cooking, take a few minutes to get everything ready. Mince the garlic, slice the onion into thin strips, finely chop the thyme and rosemary, and cut the lemons into quarters. Measure out all of your ingredients so everything is within reach before you start.
In a small bowl, mix together the salt, black pepper, garlic powder, onion powder, chopped rosemary, and thyme.
In a large baking dish or Dutch oven, add the sliced onions, baby potatoes, and baby carrots. Scatter in the minced garlic and lemon wedges from one of the lemons, then tuck in a few sprigs of rosemary and thyme for extra flavor. Pour in 1 cup of chicken broth to keep the vegetables tender while roasting.
Pat the chicken dry with paper towels to help the skin crisp up beautifully.
Gently lift the skin and spread half of the softened butter underneath; rub the remaining butter all over the outside.
Sprinkle ¼ of the seasoning mix inside the cavity. Rub the remaining seasoning all over the outside of the chicken. Place the remaining lemon wedges from the second lemon, a sprig of rosemary, and a sprig of thyme inside the cavity. Tie the legs with kitchen twine.
Transfer the chicken to the top of the bed of vegetables. Roast uncovered for 90 minutes, or until the thickest part of the breast reaches 165°F.
Remove from the oven, cover the chicken loosely with foil, and let it rest for 10–15 minutes before carving. Serve with the roasted vegetables.
For gravy, pour the pan drippings into a saucepan. Whisk 1 tablespoon cornstarch with 2 tablespoons water to make a slurry; whisk into the drippings and simmer for 2–3 minutes until thickened, thinning with broth if needed.