Bengaluru captain Sunil Chhetri's opening goal from the spot was cancelled out by Anthony Wolfe before Chesterpoul Lyngdoh scored a second-half winner for the hosts.
The game came to life in the 20th minute when Fulganco Cardozo brought down Roby Norales just as the Honduran was about to line up his shot, prompting referee Ranjit Bakshi to point to the spot.
Chhetri stepped up and smashed his shot in to the met to score for the first time since the I-League champions' Asian Football Confederation (AFC) Cup semi-final tie against Johor Darul Ta'zim in October 2016.
A defensive blunder in the 33rd minute that hit Bengaluru the hardest when Chesterpoul Lyngdoh's seemingly harmless punt from his own half went over John Johnson's head and met Anthony Wolfe's run. With Amrinder Singh off his line and stranded, the striker got Churchill an equaliser with a simple finish.
The goal seemed to have put a spring in the home side's stride as they went on to grab the lead in the 53rdminute. Picked out by Wolfe in space, Chesterpoul Lyngdoh kept his calm before placing past Amrinder to make it 2-1.
Chasing the game, Bengaluru began pushing numbers in attack and kept possession but kept running into a stubborn Churchill side who had ten men in defence.
The Blues were reduced to 10 men on 79 minutes as defender John Johnson was given marching orders following a tackle on Chesterpoul. Tempers flared at the touchline as Bengaluru looked to chase the game.
Bengaluru next travel to Jordan, where they will take on Al-Wehdat in the 2017 AFC Champions League Qualifier 2, on Tuesday, before another away fixture in the League against DSK Shivajians in Pune on February 5.