FC Porto moved three points clear of 2 win.
The two sides entered the match level on 49 points and Hulk put Porto ahead after seven minutes with a powerful left-footed shot.
Oscar Cardozo answered shortly before halftime for Benfica by scoring from close range before he added a second goal just after the break to put the home side in front.
Porto responded with James Rodriguez equalizing on the break midway through the first half, while Benfica was reduced to 10 men in the 76th minute when Emerson received a second yellow card.
Maicon then popped up four minutes from time to head home the winning goal and put Porto three points clear.
Benfica has claimed one point from its last three games and sits three points above third-place Braga, which meets Nacional on Saturday.