The word "sofa" has Semitic origins. From the Online Etymology Dictionary:
1625, "raised section of a floor, covered with carpets and cushions," from Turk. sofa, from Ar. suffah "bench." Meaning "long stuffed seat for reclining" is recorded from 1717.
The American Heritage Dictionary has a similar etymology:
Turkish, from Arabic suffa, carpet, divan, from Aramaic sippa, absolute form of sippeta, mat
It then goes further, and describes the connection to the root צפפ :
DEFINITION: Also spsp and swp. To press down, cover, overlay. a. sofa, from Arabic suffa, sofa, from Aramaic sippa, absolute form of sippeta, a mat, perhaps akin to sippa, suppa, carded wool; b. Sufi, from Arabic sufi, (man) of wool, from suf, wool, perhaps from Aramaic sippa, suppa, carded wool (see above). Both a and b perhaps from Akkadian suppu, solid, massive, compacted (textile), verbal adjective of suppu, to press down, rub down a horse, derived stem of sâpu.
According to this theory the Hebrew roots צפצפ (meaning "to press", the root meaning "to twitter, whistle" is not related) and צפפ ("to press, crowd") are related to the word tzuf צוף - "bundle of wool" (which is not related to tzuf meaning "honeycomb" or צוף meaning "to float").
Jastrow connects these roots as well, and provides us with an example of the Aramaic cousin of "sofa":
Brachot 25a: חזו הני ציפי דבי רב דהני גנו והני גרסי "look at the mats (tzifei) in the school house, some sleep thereon, while others are studying"
So if the root of "sofa" is with a tzade, why is the Hebrew word ספה sapa?
It seems to be a (mis)reading of Shmuel II 17:28:
מִשְׁכָּב וְסַפּוֹת וּכְלִי יוֹצֵר - "couches, sapot and earthenware"
Most sources interpret sapot as basins. According to Klein, the singular is saf סף (Shmot 12:22, Malachim II 12:14), but we do find sipa ספה for basin in Rabbinic Hebrew.
So why did sapa come to mean sofa? According to Klein and Stahl, this is due to the resemblance between the two words, and the proximity of sapot to mishkav in the verse above.
However, Kaddari in his new dictionary says that sapot does mean something to lie on, and is related to a different meaning of saf סף - "threshold".