Roma, who had bravely kept their challenge going by winning their last nine games, inexplicably produced one of their worst performances of the season against the Sicilian strugglers.
Mariano Izco stunned Roma by scoring twice in a six-minute spell in the first half and, although Francesco Totti pulled one back, it was only a lull in the storm.
Gonzalo Bergessio extended Catania's lead in the 56th minute and Pablo Barrientos fired a fourth to leave Roma's title hopes in tatters.
The defeat left Roma eight points behind Juventus, who host Atalanta on Monday (1900 GMT) with only two games left to play.
Juventus have 93 points from 35 games, with Roma on 85 from 36 and third-placed Napoli 69 for 35. Next Sunday's match between Roma and Juventus, who could have been the game of the season, will now be little more than a friendly.
"We got everything wrong, the players and the coach," Roma coach Rudi Garcia told RAI television.
"You can lose matches, but not like that and I want an reply from my team next Sunday.
"We have seen the difference in motivation between the two sides. When it's not there, it's difficult to win.
"We left our game in the dressing room, there was no movement and we lost all the tackles," added the Frenchman.
Juventus have won a record 30 Serie A titles, including three in successive seasons since Antonio Conte took over as coach in 2011.
"The Scudetto is always special, especially a third in a row as that had never happened to us before," Conte told reporters earlier on Sunday. "Even legendary coaches were unable to get three consecutive titles.
"The important thing isn't when or how the Scudetto arrives, but that it does arrive," he added.
Roma's moves repeatedly broke down in the last third of the field and one led to a Catania counter-attack which ended with Leto back-heeling the ball into the path of Izco, who slotted past Morgan De Sanctis in the 26th minute.
Six minutes later, Rodrigo Taddei misplaced a pass in midfield to set up another Catania counter which Izco finished off from a from narrow angle.
Roma briefly came to life when 37-year-old stalwart Totti volleyed in from close range in the 37th minute and Gervinho was denied an equaliser by Alberto Frison just before the break.
Catania, needing to win to stay up, regained their two-goal lead in 56th minute when Leto's shot was saved by De Sanctis and Bergisso snapped up the rebound.
Barrientos completed the rout with an emphatic drive from the edge of the area.
Catania moved off the bottom and were replaced by Livorno who lost 5-3 at Udinese in a game in which seven of the goals came in an extraordinary first half.
Struggling Bologna drew 0-0 at Genoa in another result which favoured the Sicilians and Chievo were beaten 1-0 at home by Torino.
Those results left Chievo in 16th with 30 points followed by Bologna (29), Sassuolo (28), Catania (26) and Livorno (25). The bottom three go down.
- Sports & Recreation
- Francesco Totti
- Pablo Barrientos