
Cremonese took a surprise lead in the 17th minute with a fine first-time shot by forward Frank Tsadjout from just outside the box.
Roma, whose coach Mourinho was sent off for dissent at the start of second half, equalised in the 71st minute when Leonardo Spinazzola controlled the ball nicely on the edge of the box and finished low past Cremonese keeper Marco Carnesecchi.
But Ciofani restored Cremonese’s lead from the spot in the 83rd minute when he struck into the bottom left corner past Roma goalkeeper Rui Patricio, who had fouled David Okereke to concede the penalty.
Roma are fifth on 44 points, one point behind fourth-placed Lazio and three above Atalanta in sixth.
Cremonese’s first win of the season moved them up one place to 19th, eight points adrift of the safety zone.