The following Python can be used to sort features by some attribute, here the area, and increment some field, here named 'Rank'. The field should exist. Make your polygon layer the active layer and paste the following code into Python console.
aLayer = qgis.utils.iface.activeLayer() # get active layer
# create list of tupels of area and feature-id
aList= [(feat.geometry().area(), feat.id()) for feat in aLayer.getFeatures()]
aList.sort() # sort list of tupels
i = 1
fni = aLayer.fieldNameIndex('Rank') # get fieldindex
aLayer.startEditing()
for feat in aList:
aLayer.changeAttributeValue(feat[1], fni, i) # change field value
i += 1
aLayer.commitChanges() # save changed and stop editing
The code can be used in any case, where a field should be populated with an incremented value reflecting some sorting. Another use case is sorting by easting or northing, as in this thread (Create a reference number (id) based on x coordinate in QGIS).