Iker Casillas – the competition's record appearance holder – laid the foundations for their victory with an early penalty save from Manuel Fernandes before Moussa Marega's successful spot-kick at the other end handed Sergio Conceicao's side the lead.
Hector Herrera doubled their advantage with a powerful header, but Lokomotiv's first goal of the campaign through Anton Miranchuk seven minutes before the interval offered them hope of reining in the Portuguese champions.
Jesus Manuel Corona put the result beyond doubt after 47 minutes, though, as Porto moved onto seven points after back-to-back Champions League wins, while Lokomotiv – who had Solomon Kvirkvelia dismissed 14 minutes from time – remain rock bottom of the group after three consecutive defeats.
Lokomotiv were gifted a golden opportunity to take a 10th-minute lead when Alex Telles tripped Aleksey Miranchuk just inside the penalty area. Fernandes' resulting spot-kick lacked power, however, and was pawed away by the evergreen Casillas.
Aleksey Miranchuk was then denied a certain goal by Telles' block on the line before Marega put Porto ahead in the 26th minute, coolly slotting into Guilherme's bottom right-hand corner from the spot after Eder had pulled Felipe back at a corner.
Herrera then doubled the Portuguese champions' lead in the 35th minute, heading in Corona's fine cross from eight yards for his second goal of their Champions League campaign.
The Russian champions bounced back just three minutes later, though, as Aleksey Miranchuk picked Eder Militao's pocket on the edge of the area and teed his brother Anton up to stroke past Casillas from 12 yards.
Their hopes of gaining a first point of the campaign were all but extinguished just two minutes after the interval when Corona latched onto Yacine Brahimi's throughball and unleashed a fizzing drive into the roof of the net.
The hosts rarely looked like setting up a tense finale and any faint hopes they had of clawing their way back into the game were ended when last-man Kvirkvelia received his marching orders for wiping out Herrera late on.
What does it mean? Porto in pole position
After two wins on the spin, Porto know victory in the reverse fixture next month will put them in a superb position to qualify for the knockout stages. Lokomotiv, meanwhile, are experiencing a woeful Champions League campaign and could be put out of their misery if they suffer another loss in Portugal.
Corona gives Lokomotiv a headache
The Mexico international was a handful for Lokomotiv's defenders all game, setting up compatriot Herrera with a wonderful cross in the first half and then putting the game to bed with a fierce drive early in the second.
Eder loses his head
The Portugal international made a real mess of his attempt to keep tabs on Felipe from a corner, wrapping his arms around the defender's midriff and leaving referee Bobby Madden with little choice but to point to the spot.
Key Opta facts:
- Lokomotiv Moscow have lost each of their last four games in the Champions League, their worst run since losing five consecutively in September 2003.
- Porto are unbeaten in six Group Stage games in the Champions League, their best run since going 10 unbeaten between September 2014 to November 2015.
- Jesus Manuel Corona scored the 10th goal by a Mexican player in the Champions League for Porto – they have more goals from Mexican players than any other side (Manchester United next on seven).
- Anton Miranchuk's goal (assisted by twin Aleksey) was Lokomotiv Moscow's first in the Champions League since February 2004 against Monaco.
- Porto's Jesus Manuel Corona is the first Mexican player to both score and assist in a Champions League game since he himself did so against Leicester City in December 2016.
Lokomotiv return to domestic action on Sunday with a visit to Yenisey, while Porto travel to Feirense in the Primeira Liga on the same day.