ST. PETERSBURG — It was a mass substitution that looked destined to produce mass enjoyment for the Rowdies and their fans.For the second week in a row, sub Lucky Mkosana scored the winning goal on a header, his 79th-minute flick-in to give Tampa Bay a 1-0 win over Charleston at Al Lang Stadium on Saturday night. The Rowdies (12-3-3) advance to the USL Championship’s Eastern Conference final, at Louisville City FC next Saturday (7 p.m., ESPN+).Mkosana entered along with Leo Fernandes and Malik Johnson, all in the 70th minute. The Rowdies were already destroying Charleston in terms of second-half possession, and the further offensive injection portended the breakthrough on the scoreboard.It came with the help of a Charleston foul just outside the penalty box. At too severe of an angle to attempt a shot, lefty Fernandes and Zach Steinberger stood over the ball, and it was the right-footed Steinberger who struck. His delivery dipped perfectly in the middle of two defenders and Mkosana, rather than go for power, redirected the ball upward, sending it just underneath the crossbar.“Lucky and Leo epitomize everything we want to be about,” said Rowdies coach Neill Collins. “Lucky takes the headline for his goal, yet he played (just) 25 minutes. Your role is not defined by how long you play, it’s by how well you do it.”Tampa Bay played extraordinarily well throughout the second half. When Mkosana scored, the Rowdies were at 75 percent possession for the second half, but that quickly tilted. Charleston (10-3-4) went for broke and provided a nail-biting conclusion, made more tense when two Tampa Bay clean breakaways were stymied.But shortly after a long pass was allowed 3 feet wide of the right post by goalkeeper Evan Louro, the final whistle blew and the announced crowd of 1,301 exulted. Charleston had given the Rowdies all three of their defeats, most recently in St. Petersburg to end the regular season.“Credit to Charleston. They’ve given me some sleepless nights the last couple of months. That was a very, very dominating performance against a very good side,” Collins said.The Rowdies looked bent on trying to grab an early lead while Charleston settled in and eventually commanded the last 10 minutes of the first half. Defender Jordan Scarlett got good headed contact on an early corner kick but missed high, and Sebastian Dalgaard’s brilliant individual work led to a prime chance.Dalgaard might have been the most threatening Tampa Bay player in the first half, with the combo of Juan Tejada and Steinberger also combining to keep the Battery defense busy. Tejada’s drop pass for Steinberger resulted in the only shot on target for either team in the half, but it was right to Charleston keeper Joe Kuzminsky.Collins said the Rowdies got a little “tentative” toward the break but got back to firm control from there.Charleston’s Zeiko Lewis sprinted to win a ball In the 50th minute but his attempt from close range was snared by Louro at the right post. From there, the Rowdies seemingly held the ball in Charleston’s defensive third for the next 10 minutes, building up to the fateful substitution.“They made a great impact, raised our energy levels. That (change) is energizing for you, and demoralizing for the other team when it’s starting to feel tired,” Collins said.Mkosana nearly connected on passes from Johnson (73rd minute) and Fernandes (74th) before getting the winner — his eighth as a sub for Tampa Bay. Collins said originally it was a 2-for-2 swap but when Dalgaard went down with a cramp, he added Johnson to the mix.Louisville (13-3-2) defeated Saint Louis 2-0 in the other East semifinal.