Bengal, who qualified for the last eight with a 5-1 win over Yangon United, left it until the 71st minute to edge ahead thanks to substitute Ryuji Sueoka.
After a goalless first half, the visitors had a glorious opportunity to take the lead through Edward Junior Wilson after the break.
However, the midfielder could only strike the post with his effort, and substitute Sueoka made Semen pay 20 minutes from time.
Sueoka, who only came on 15 minutes earlier, fired past Gurpreet Singh Sandhu from the edge of the area to give Marcos Falopa's men the lead over the current Indonesian Premier League pacesetters.
While the visitors looked to hit back and grab an equaliser at the Salt Lake Stadium, they found defender Uga Okpara in fine form as the Nigerian helped the hosts hold on.
It gives Falopa's side a slender advantage going into the second leg in Padang on Tuesday, with Jafri Sastra needing his men to recover quickly from their first defeat in 10 games.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.