Middlesbrough 0 Everton 1
David Moyes' men were terrific value for the three points and could easily have won by a much bigger margin.
In the end they had to settle for one goal which came from a goalmouth scramble in the 51st minute.
Mikel Arteta floated over a corner from the left and Cahill connected with a strong close-range header which brought a brilliant save from Boro goalkeeper Ross Turnbull.
But Turnbull's parrying save dropped at the feet of Cahill who made no mistake at the second attempt.
Everton might have been ahead earlier because they created several half-chances from set-pieces in the first half as Boro's jittery defence was pulled to pieces.
They went very close in the 28th minute when Cahill laid the ball back for Steven Pienaar to send a rising volley against the outside of the left-hand post.
Joleon Lescott was then unable to control a knock-down from his defensive team-mate Phil Jagielka right in front of goal.
Boro had few chances throughout the game with their best one coming in the 33rd minute when Tim Howard made a brilliant save at the foot of the left-hand post to keep out a strong drive from Gary O'Neil.
It was still amazing that Everton were not in front at the interval though they quickly made amends at the start of the second half.
Seven minutes later Everton should have added to Cahill's goal when Dan Gosling missed an open goal following great work by Marouane Fellaini.
Afterwards Everton were happy to see out the final half-hour but they had little Boro pressure to deal with.
Boro brought on lively substitute Adam Johnson who made several strong runs without any end product.
Boro still had a chance to grab an unlikely point when another substitute, Afonso Alves, spurned a good opportunity two minutes from time.
But Everton thoroughly deserved their win and can look forward to the New Year with confidence while Boro - who have now failed to win in seven games - clearly face a bleak future.