Lalkovic, a Slovakia Under-21 international on loan from Chelsea, struck nine minutes into the second half when he ran on to a neat throughball from Romaine Sawyers and coolly rounded goalkeeper Chris Weale before slotting home.
Shrewsbury started brightly and Gozie Ugwu, set up by Tom Eaves, might have fired the hosts into a third-minute lead but his close-range effort was well saved by Richard O'Donnell.
But Walsall were then the more dangerous side at a windswept Greenhous Meadow and Sawyers, having exchanged passes with Craig Westcarr, was denied by a flying save by Weale.
Andy Taylor bent a long-range free-kick just wide while defender Paul Downing headed two set-pieces over the crossbar.
Shrewsbury had their chances to equalise after Lalkovic's goal, his third for the Saddlers.
Eaves lifted an effort over the bar from three yards out before Walsall midfielder Sam Mantom hacked the ball off the line from a goalmouth scramble as the visitors stood firm to register a deserved victory - their second of the season over Town having also triumphed in the FA Cup.
Gary Alexander's injury-time header capped a spirited second-half fightback as Crawley rescued a 2-2 draw against high-flying Preston.
North End, boasting a 10-match unbeaten run going into the game, made the perfect start when defender Paul Huntington headed in a corner from Scott Laird after only nine minutes.
Josh Brownhill then doubled the advantage seven minutes later by latching on to a weighted throughball from skipper John Welsh and lofting the ball over goalkeeper Paul Jones.
Walsh struck a post two minutes from time as the hosts pushed for a leveller, which duly came when Alexander forced home Adams' corner from close range.
Britt Assombalonga's last-gasp injury-time equaliser earned promotion-chasing Peterborough a deserved 2-2 draw at Gillingham.
Assombalonga dramatically back-heeled the ball past a number of Gills defenders and goalkeeper Stuart Nelson from Grant McCann's corner in the seventh minute of added time.
The striker's 14th goal of the season had earlier given the visitors an early lead, as the former Watford forward reacted quickest to fire home after John Bostwick's low drive was parried by Nelson.
Joe Martin grabbed the equaliser, curling in a spectacular 20-yard free-kick six minutes into the second half after McCann had fouled Cody McDonald.
McDonald's sixth goal of the season then put the hosts ahead after 70 minutes as headed in from Myles Weston's cross, with the striker wasting a golden chance late on before Assombalonga's late heroics snatched a draw.
Notts County thrashed Colchester 4-0 to register back-to-back wins under Shaun Derry in emphatic style.
County went ahead just before the half-hour through Jack Grealish before the visitors doubled their lead just before the break when Morgan Fox slotted home from close range.
Callum McGregor scored a third for the Magpies with three minutes left with a sweet strike. Gary Liddle wrapped up victory for County in the final minute with a nonchalant finish following Grealish's pass.
Bradford and Leyton Orient shared the spoils at the Coral Windows Stadium.
Lloyd James opened the scoring for the visitors in first-half stoppage time and it seemed that they'd secured victory, only for Nahki Wells to grab a dramatic late equaliser.
Jonathan Douglas scored in the third minute of stoppage time as Brentford snatched all three points with a narrow 1-0 win over Oldham.
Rotherham scored twice in the opening half an hour as they secured all three points with a 2-1 win over Bristol City at Ashton Gate.
Nouha Dicko opened the scoring inside three minutes before Ben Pringle grabbed Rotherham's second. Bobby Reid pulled one back for Bristol City deep into the second half but it was too little, too late.
MK Dons striker Patrick Bamford continued his impressive run of form in front of goal to help send high-flying Wolves crashing to a 2-0 defeat at Molineux.
Bamford, 20, on-loan from Chelsea, took his goal tally to 14 for the season with a neat 31st-minute finish before Ben Reeves made the game safe with a stunning 20-yard strike at the start of the second-half.
Tranmere ran into a goalscoring storm as Carlisle swept to a 4-1 win on a rainswept and windy afternoon at Brunton Park.
A sparkling brace by Tom Lawrence was added to by goals from David Amoo and James Berrett before Ryan Lowe grabbed a late consolation header for Tranmere.
Jose Baxter scored the only goal of the game as Sheffield United bagged a deserved three points in their battle to beat the drop, edging Swindon.
The former Everton and Oldham striker claimed his second goal in the space of a week midway through the second half as Nigel Clough's side stunned high-flying Swindon at Bramall Lane.
Tom Pope headed an 89th-minute equaliser to earn Port Vale a hard-earned point in a 2-2 draw against 10-man Stevenage.
Vale's dominance was rewarded in the 32nd minute when Jennison Myrie-Williams fired a penalty into the top corner. But Stevenage woke from their slumber to score in both of their first two serious attacks shortly before half-time.
Jordan Burrow guided a right-footed shot low inside Sam Johnson's post after Francois Zoko skinned Chris Robertson to cross from the left.
And Burrow turned to smash his second into the roof of the net with a left-footed effort from six yards after Zoko again caused havoc in the Vale defence.
Pope finally rewarded increasing Vale pressure when he met Rob Taylor's left-wing cross with an unstoppable eight-yard header just inside Day's left-hand post.
Coventry and Crewe shared a 2-2 draw at Sixfields which does little for either side's cause.
On-loan QPR striker Tom Hitchcock put the visitors in front against the run of play in the 14th minute.
Strike partner Chuks Aneke slipped a throughball between the legs of defender Dan Seaborne and Hitchcock coolly struck across goalkeeper Joe Murphy and into the bottom corner from the right side of the penalty area.
Coventry were deservedly level nine minutes before the break when Chris Maguire's inswinging corner was flicked home by Franck Moussa.
City then took the lead in the 56th minute when Callum Wilson got up to convert a penalty after he was felled by Crewe keeper Ben Garratt.
The hosts looked to be in the ascendency after that but Crewe equalised in the 66th minute.
Maguire and Jordan Clarke gave the ball away in midfield, allowing Hitchcock to race through and square for Aneke to tap in.