Maybe you can use Model Builder and iterate through the parcels, selecting the buildings for each iteration and somehow extract the largest building area in the building selection and save that in a field in the parcel layer. Later you could join the building layer with the parcel layer using that area and then mark a field in the parcel layer with the parcel number, unjoin them. This would mark the largest building in each parcel with the parcel number.
Using Model Builder I set up a temp file with a similar situation (several polygons inside larger polygons). I was able to iterate through the large polygons and select by location the smaller ones and sort the smaller selected polygons by shape area descending (put largest on top), but I didn't have time to figure out the rest of the steps.
Maybe an ArcPy script is needed.