Cross is located in southern Buffalo County and is bordered by Trempealeau County to the east.
According to the United States Census Bureau, the town has a total area of , of which is land and , or 0.44%, is water [REF].