The Copa Libertadores champions went into Tuesday's clash in Doha as heavy favourites but were well below par in the first half, Salem Al Dawsari putting the Saudi Arabian side on possible course for a shock victory.
However, the AFC Champions League winners faded after the interval as an instrumental performance from Bruno Henrique inspired a Flamengo comeback.
He teed up Giorgian de Arrascaeta for the equaliser soon after the restart and put Flamengo in front with a thumping header 12 minutes from time, before his cross made sure of success when Ali Hadi Albulayhi put through his own net.
Al Hilal then had Andre Carrillo sent off for a reckless challenge, Flamengo seeing out a win that could set up a rematch of their 1981 Intercontinental Cup defeat of Liverpool, who face Monterrey on Wednesday.
Flamengo were given an early warning in the 16th minute when Salem broke free down the left and forced a fine near-post save from Diego Alves. The ball broke to Bafetimbi Gomis, but the striker skied the rebound with an open goal in front of him.
Jorge Jesus' side did not learn their lesson from that scare, however, and Salem beat Alves two minutes later with a deflected strike after impressive work down the right from Mohammed Al-Burayk.
A response never looked like coming in a lacklustre first half from Flamengo, but they needed only three minutes of the second to level matters with a superbly worked team goal.
¡GOL de @Flamengo_es!— FOX Deportes (@FOXDeportes) December 17, 2019
Gran jugada en conjunto para el segundo del equipo brasileño y cada vez más cerca de la final de la #MDCenFD.@RodolfoLanderos @marianot19 @SirJohnLaguna pic.twitter.com/9tZRqJ0iPB
Gabriel Barbosa - the two-goal hero of their triumph in the Libertadores final - played an incisive pass into the box for Bruno Henrique, who unselfishly squared for De Arrascaeta to tap in.
Abdullah Al-Mayoof's goal was rarely threatened thereafter, but Flamengo found the killer ball in the 78th-minute as Rafinha's excellent right-wing cross was emphatically turned home by Bruno Henrique, who was celebrating again four minutes later.
Albulayhi could do nothing to avoid bundling Bruno Henrique's expertly placed delivery into his own net, with Al Hilal's frustration evident when Carrillo's moment of madness saw him rightly dismissed to end any hope of a dramatic twist in the tale.