The hosts came close to breaking the deadlock after a quarter of an hour through Junior, who rounded Johns and got a shot away from a tight angle with Isaac Baird coming to Linfield's rescue after he cleared the effort off the line.
Minutes later Junior came close again, this time, from close range but Johns was equal to it as he saved reactively down to his right-hand side.
Johns came to Linfield's rescue again later in the first half when he denied Paul Doyle from distance after a tidy attacking phase from the home side.
Baird came closest to breaking the deadlock up the other end for the Blues but headed just over the crossbar with a diving effort following Adam Frizzell's inviting corner.
The visitors came closest to seizing the advantage 15 minutes after the restart as McClean met Dane McCullough's low, fizzed cross but dragged his shot just wide of the left-hand upright.
It was then Declan Dunne's turn to pull off a big save when he denied substitute Kieran Offord from point-blank range when it looked more difficult to miss.
The Blues then hit the front in the 82nd minute as McClean tried his luck from the edge of the box following good work from substitute Dylan Wells down the left and found the top corner to seal the three points for the south Belfast side.