Your sofa image has so low resolution that no fabric texture can look acceptable. I guess you have a better version and we have got only a screenshot. To get anything usable I started by doing artificial resolution increase to 300% with a photo enlargener (=ON1 Resize, Photoshop's resize is useless because it doesn't try to guess borders and keep them sharp)
The background was removed by drawing a path. Color and contrast based methods such as the magic wand, quick selection tool and selecting a color range are ineffective. Your screenshot has too much JPG compression noise and the light grey fabric is too near the white background + grey shades.
Actually I made 2 versions to different layers: One with feet and one without.
A quick test revealed, that your texture contains too clear stripes, which cannot look plausible as overlay. That's because the texture should have different watching direction in different places. In Photoshop that means a heavy warping job and processing different surfaces separately for best result.
I skipped the warping and took only the average color. I inserted a Hue & Saturation adjustment layer in colorize mode for it and tweaked until the color seemed acceptable or as acceptable as a single hue version can be. The blurred piece of your texture image in bottom right is used as a reference:
As you see, the lightest parts of the sofa have got your new color. For that reason the lightness slider is pulled down substantially in the adjustment dialog.
I didn't want to color the feet, so there's a layer mask. It's actually not a must, because I could as well have been used the version without feet.
You asked some grain. No grain can be added to your screenshot, even one pixel grains seem too blocky. But I have a 300% sized version. It stands a slight pixel noise. Simply inserting noise is useless, because the grain must be invisible in dark seams and wrinkles. I inserted a curves adjustment layer to make the fabric darker:
The noise is in the layer mask:
Another possibility is to insert the noise as a partially transparent image layer which has a layer mask. That mask should be generated from the sofa image to make the dark seams and wrinkles less noisy.
My opinion is the surface is still too flat, the noise doesn't help. One possibility is to use embossed noise:
Filter > Stylize > Emboss is applied to the noise in the layer mask of the curves layer. The Hue & Saturation layer needed readjusting because otherwise the result would be too dark.