In a game that saw both sides create a hatful of openings, Lopez's spot-kick after half an hour was enough for Catania to end a five-game winless run stretching back to September.
Defeat for Udinese - who twice hit the post - was their third in four games and keeps them mired in mid-table, while the three points were not enough for Catania to clamber out of the bottom three, although they are now level on nine points with 17th-placed Sampdoria.
Catania coach Luigi De Canio stressed the importance of making home games count pre-match after failing to take a single point on their travels this season, and the hosts began brightly with Lucas Castro bringing a brilliant point-blank save from Zeljko Brkic after 12 minutes.
Luis Muriel then threatened for Udinese with an effort just wide of the target, while Roberto Pereyra failed to convert from close range for the visitors minutes later.
Pereyra was unlucky not to open the scoring for Udinese after 24 minutes when he beat three defenders but saw his shot come back off the post.
Keko missed a glorious opening for Catania in the 28th minute as he somehow fired wide from close range, but that miss was forgotten within two minutes after Maurizio Domizzi pulled Nicola Legrottaglie's shirt inside the area and Lopez stepped up to stroke home the resulting penalty.
Catania were denied a second on 42 minutes when Keko had the ball in the net, only for the referee to bring the play back for a foul on Gabriel Silva.
Udinese's luck was in on that occasion but it was out again on 67 minutes when they hit the post for the second time, Giampiero Pinzi the frustrated player on this occasion with a drive from 25 yards that deserved better.