Seamus Coleman struck early on to give Roberto Martinez's side the advantage but it took the Belgian to swiftly restore their lead when Gaston Ramirez equalised in the second half
Seamus Coleman gave the hosts the lead with a marvellous individual effort but Gaston Ramirez equalised from fully 35 yards with a dipping effort that deceived stand-in goalkeeper Joel Robles.
However, Chelsea loanee Lukaku was on hand to finish a terrific sweeping move just three minutes later and keep Everton in the hunt for European places.
Were it not for Thursday's loss to Sunderland, Everton would have been celebrating an unbeaten year at home but they responded to that setback with a measured performance in front of their fans.
|VIEW FROM GOODISON PARK
|By Gary Maiden
It was hard work for Everton but they have got back to winning ways after Boxing Day's disappointing defeat at home to Sunderland.
Gaston Ramirez looked to have snatched a point for Southampton after his superb 30-yard left-footed drive cancelled out Seamus Coleman's brilliant early opener, only for Romelu Lukaku to win it late on for the Toffees.
The win sees Everton climb back into the top four and Roberto Martinez can be very happy with his side's opening half of the campaign.
For Southampton, it is now just one win in seven but they played their part in a free-flowing game of attacking football and are likely to give their fans more memorable days as the season progresses.
Leighton Baines returned to Roberto Martinez's first XI after injury and Robles made his first Premier League start for Everton in place of the suspended Tim Howard, with Kelvin Davis returning to the Southampton goal ahead of Paulo Gazzaniga and being called into action by Ross Barkley from Coleman's cross in the third minute.
The hosts' bright start paid off six minutes later when right-back Coleman picked the ball up on his flank and burst into the area before smashing an unstoppable strike into the top corner. It was the Irishman's fifth goal of the season, already surpassing his tally for the previous four campaigns combined.
Southampton came into the game game on the back of a rousing 3-0 win over Cardiff City on Thursday but struggled to find any sort of fluency for much of the opening period, seeing Adam Lallana spurn a good chance after weaving through two defenders.
They were nearly made to pay just after the break, when a superb low cross from Bryan Oviedo found Barkley in the six-yard box but the 20-year old failed to find the target.
Southampton began to find their feet as the game wore on and had multiple chances in a matter of seconds after 65 minutes, Luke Shaw having a low drive blocked before Jay Rodriguez's effort was deflected wide.
Five minutes later they were on level terms in emphatic circumstances when substitute Ramirez sent a wicked swerving effort past Robles and into the roof of the net from distance.
The visitors could not hold on, though, and were behind once again just three minutes later, as substitute Steven Pienaar and James McCarthy combined to give Lukaku a chance, which he finished with aplomb.
Everton pushed for a third in the closing stages, Lukaku firing over and forcing a great save from Kelvin Davis, but a one-goal margin proved enough for victory.