Preheat oven to 450°F (230°C). Line a roasting pan with foil and place a rack on top. Pat the lamb shoulder dry with paper towels and score shallow cuts into the fat.
Combine olive oil, garlic, rosemary, salt, and pepper in a small bowl. Rub generously over the lamb, pressing into the cuts. Place lamb on the rack, squeeze lemon juice over it, and add lemon halves to the pan.
Roast uncovered for 20 minutes to brown and seal in juices.
Reduce oven temperature to 325°F (160°C). Add 1 cup water or stock to the pan and cover tightly with foil. Roast for 3 hours, basting occasionally.
Remove foil and roast uncovered for another 30–45 minutes until the surface is golden and crispy.
Transfer to a platter and rest for 20 minutes before carving. Use pan juices to make gravy or drizzle over the lamb for extra flavor.