Shakhtar Donetsk soaked up pressure from Braga and then scored in either half to take a 2-1 away win in the first leg of their Europa League quarterfinal.
Braga had the best of the first period, but Shakhtar went ahead against the run of play just before half-time through Yaroslav Rakitskiy, who was an injury doubt before the match.
The second period at the Estadio Municipal de Braga proved more equal in terms of chances, and the visitors again took one of theirs, this time through Facundo Ferreyra.
Although substitute Wilson Eduardo pulled a goal back late on, Braga will have their work cut out to turn the tie around in next Thursday's second leg in Ukraine.
Both teams had significant absentees for the first encounter, Braga missing Crislan and Rui Fonte to hamstring injuries and Josue to a thigh problem.
Shakhtar were without Fred and Olexandr Kucher, who were both suspended, plus injured pair Marcio Azevedo and Vyacheslav Shevchuk.
Before the match Shakhtar boss Mircea Lucescu warned his side about the threat of Silva Rafa, who justified those words with two early chances.
The first came in the second minute when Andrei Pyatov tipped over a 20-yard shot after Rafa cut in from the left.
Midway through the first period Rafa weaved his way into the area, but his shot was scuffed straight at Pyatov.
With the interval approaching Jose Ricardo Ferreira wasted a good opportunity, failing to keep his header down when a corner found him unmarked around the penalty spot.
Before the break Braga were made to pay for those misses as a corner somehow reached Rakitskiy at the far post and the centre-back netted via a deflected shot.
Three minutes into the second half Maksym Malyshev had a golden chance to double the lead, but from point-blank range shot straight at keeper Lima Matheus Magalhaes.
The dangerous Rafa soon went close to levelling, his effort from a weak defensive clearance hitting the top of the bar and going over.
Rakitskiy was booked for a foul on Rafa, meaning the Shaktar man will miss the second leg, before Ferreyra doubled the lead in the 75th minute with a deft finish from Bonfim Marlos' right-wing cross.
Rafa earned the game's second booking, for a foul on Viktor Kovalenko, but in the 89th minute Eduardo gave the hosts a lifeline by meeting Baiano's right-sided cross with a fine header into the bottom corner.